Skip to content

Commit

Permalink
authentication processing but chain-code not finished
Browse files Browse the repository at this point in the history
  • Loading branch information
BIJOY-SUST committed Nov 8, 2019
1 parent 119fdbe commit 84dd288
Show file tree
Hide file tree
Showing 5 changed files with 304 additions and 99 deletions.
16 changes: 0 additions & 16 deletions javascript/.editorconfig

This file was deleted.

200 changes: 137 additions & 63 deletions javascript/app.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
/* eslint-disable indent */
/* eslint-disable no-trailing-spaces */
/* eslint-disable no-undef */
/* eslint-disable quotes */
/* eslint-disable no-unused-vars */
/* eslint-disable no-var */
Expand Down Expand Up @@ -29,30 +32,134 @@ app.set('views', publicDirectoryPath);
app.use(express.static(publicDirectoryPath));

const port = process.env.PORT || 3000;
////////////////////////////////////////////////////// Index //////////////////////////////////////////////////////////

// index page
app.get('/', (req, res) => {
// res.send('Hello World');
res.render('index');
});

////////////////////////////////////////////////////// Index //////////////////////////////////////////////////////////



////////////////////////////////////////////////////// Log In /////////////////////////////////////////////////////////

// login page
app.get('/login', (req, res) => {
res.render('login');
});
// login page
app.post('/login', async (req, res) => {

var result = await loginUserDB();
console.log(result);
res.render('home');
const user = {
email: req.body.email,
password: req.body.password
};
// console.log(user.password);
user.password = crypto.createHash('sha256').update(user.password).digest("base64");
// console.log(user.password);
await loginUserDB(user).then((result) => {
console.log('Register successfully');
res.render('home');
}).catch((error) => {
console.error('Failed to register successfully');
res.render('login');
});
});

////////////////////////////////////////////////////// Log In /////////////////////////////////////////////////////////




////////////////////////////////////////////////////// Register ///////////////////////////////////////////////////////


// register page
app.get('/register', (req, res) => {
res.render('register');
});
// register page


// register page - private and public key retrieve from text file

const keyPrivate = (keyDirectory, userName) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
fs.readdir(keyDirectory, function (err, files) {
//handling error
if (err) {
return console.log('Unable to scan directory: ' + err);
}
//listing all files using forEach
files.forEach(function (file) {
// Do whatever you want to do with the file
if (file !== userName) {
var name = file;
var len = name.length;
var i = len - 3;
var lastThree = name.substring(i, len);
fs.readFile(keyDirectory + '/' + file, 'utf-8', function (err, content) {
if (err) {
return console.log('Unable to scan file: ' + err);
}
content = content.replace(/(\r\n|\n|\r)/gm, "");
// console.log(content);
if (lastThree === 'riv') {
var privateKey = content;
resolve(privateKey);
}
});
}
});
});
}, 2000);
});
};
const keyPublic = (keyDirectory, userName) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
fs.readdir(keyDirectory, function (err, files) {
//handling error
if (err) {
return console.log('Unable to scan directory: ' + err);
}
//listing all files using forEach
files.forEach(function (file) {
// Do whatever you want to do with the file
if (file !== userName) {
var name = file;
var len = name.length;
var i = len - 3;
var lastThree = name.substring(i, len);
fs.readFile(keyDirectory + '/' + file, 'utf-8', function (err, content) {
if (err) {
return console.log('Unable to scan file: ' + err);
}
content = content.replace(/(\r\n|\n|\r)/gm, "");
// console.log(content);
if (lastThree === 'pub') {
var publicKey = content;
resolve(publicKey);
}
});
}
});
});
}, 2000);
});
};
const keyValue = async (userName) => {
var keyDirectory = path.join(__dirname, './wallet/' + userName);
const privateKey = await keyPrivate(keyDirectory, userName);
const publicKey = await keyPublic(keyDirectory, userName);
return {
first: privateKey,
second: publicKey
};
};
// Main Register Page started
app.post('/register', urlencodedParser , async function (req, res) {
const user = {
key: req.body.username+req.body.email,
Expand All @@ -61,17 +168,17 @@ app.post('/register', urlencodedParser , async function (req, res) {
email: req.body.email,
password: req.body.password
};
console.log(user.password);
// console.log(user.password);
user.password = crypto.createHash('sha256').update(user.password).digest("base64");
console.log(user.password);
// console.log(user.password);

console.log(user.key);
// console.log(user.key);
user.key = crypto.createHash('sha256').update(user.key).digest("base64");
console.log(user.key);
// console.log(user.key);

console.log(user.token);
// console.log(user.token);
user.token = crypto.createHash('sha256').update(user.token).digest("base64");
console.log(user.token);
// console.log(user.token);


// console.log(user.name);
Expand All @@ -80,61 +187,28 @@ app.post('/register', urlencodedParser , async function (req, res) {

await createUser(user.name);

var keyDirectorey = path.join(__dirname, './wallet/' + user.name);
// console.log(keyDirectorey);
var privateKey, publicKey;
fs.readdir(keyDirectorey, function (err, files) {
//handling error
if (err) {
return console.log('Unable to scan directory: ' + err);
}
//listing all files using forEach
files.forEach(function (file) {
// Do whatever you want to do with the file
if (file !== user.name) {
var name = file;
var len = name.length;
var i = len - 3;
var lastThree = name.substring(i, len);
console.log(lastThree);
fs.readFile(keyDirectorey + '/' + file, 'utf-8', function (err, content) {
if (err) {
return console.log('Unable to scan file: ' + err);
}
content = content.replace(/(\r\n|\n|\r)/gm, "");
// console.log(content);
if (lastThree === 'riv') {
privateKey = content;
// console.log(privateKey);
}
else if (lastThree === 'pub') {
publicKey = content;
// console.log(publicKey);
}
});
}
});
});

setTimeout( async function () {
console.log('Waiting for key');
console.log(privateKey);
console.log(publicKey);

await registerUserDB(user,privateKey,publicKey).then((result)=>{
console.log('Register successfully');
await keyValue(user.name).then((result) => {
// var result = await keyValue('user1');
console.log(result.first);
console.log(result.second);
setTimeout( async function () {
console.log('Waiting for key');
res.render('login');
}).catch((error)=>{
console.error('Failed to register successfully');
res.render('register');
});
res.render('login');
}, 2000);


await registerUserDB(user,result.first,result.second).then((result)=>{
console.log('Register successfully');
res.render('login');
}).catch((error)=>{
console.error('Failed to register successfully');
res.render('register');
});
}, 2000);
}).catch((e) => {
console(e);
});
});

////////////////////////////////////////////////////// Register ///////////////////////////////////////////////////////

});

//home page
app.get('/home', function (req, res) {
Expand Down
9 changes: 5 additions & 4 deletions javascript/routers/login.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const path = require('path');

const ccpPath = path.resolve(__dirname, '..', '..', '..', 'first-network', 'connection-org1.json');

async function main() {
async function main(user) {
try {

// Create a new file system based wallet for managing identities.
Expand All @@ -18,16 +18,16 @@ async function main() {
console.log(`Wallet path(login): ${walletPath}`);

// Check to see if we've already enrolled the user.
const userExists = await wallet.exists('user1');
const userExists = await wallet.exists(user.name);
if (!userExists) {
console.log('An identity for the user "user1" does not exist in the wallet');
console.log('An identity for the user '+user.name+' does not exist in the wallet');
console.log('Run the registerUser.js application before retrying');
return;
}

// Create a new gateway for connecting to our peer node.
const gateway = new Gateway();
await gateway.connect(ccpPath, { wallet, identity: 'user1', discovery: { enabled: true, asLocalhost: true } });
await gateway.connect(ccpPath, { wallet, identity: user.name, discovery: { enabled: true, asLocalhost: true } });

// Get the network (channel) our contract is deployed to.
const network = await gateway.getNetwork('mychannel');
Expand All @@ -39,6 +39,7 @@ async function main() {
// queryCar transaction - requires 1 argument, ex: ('queryCar', 'CAR4')
// queryAllCars transaction - requires no arguments, ex: ('queryAllCars')
// const result = await contract.evaluateTransaction('queryAllCars');
// const result = await contract.evaluateTransaction('loginUser', user.email, user.password);
const result = await contract.evaluateTransaction('queryCar', 'CAR4');
console.log(`Transaction has been evaluated, result is: ${result.toString()}`);
return result.toString();
Expand Down
2 changes: 1 addition & 1 deletion javascript/routers/register.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ async function main(user, privateKey, publicKey) {
// Submit the specified transaction.
// createCar transaction - requires 5 argument, ex: ('createCar', 'CAR12', 'Honda', 'Accord', 'Black', 'Tom')
// changeCarOwner transaction - requires 2 args , ex: ('changeCarOwner', 'CAR10', 'Dave')
console.log(user.name,user.email,user.password,privateKey);
console.log(user.name,user.email,user.password,privateKey,publicKey);
// await contract.submitTransaction('createUser',user.key ,user.token , user.name,user.email,user.password,privateKey,publicKey);
await contract.submitTransaction('createCar', 'CAR15', 'Honda', 'Accord', 'Black', 'BIJOY');

Expand Down
Loading

0 comments on commit 84dd288

Please sign in to comment.