Wednesday, 12 June 2019

Project NodeJS ,auth,jsonwebtoken,bcryptjs,socket


app.js
const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
const app = express();
const testRoutes = require('./routes/test');

// app.use(bodyParser.urlencoded()); // x-www-form-urlencoded <form>
app.use(bodyParser.json()); // application/json

app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader(
'Access-Control-Allow-Methods',
'OPTIONS, GET, POST, PUT, PATCH, DELETE'
);
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
next();
});
app.use("/test", testRoutes);
app.use("/a", (req, res, next) => {
console.log("????");
res.json({
name: "Ajay"
});
res.next();
});
app.use((error, req, res, next) => {
console.log(error);
const status = error.statusCode || 500;
const message = error.message;
const data = error.data;
res.status(status).json({
message: message,
data: data
});
});
const server = app.listen(3000);
const io = require('socket.io')(server);
// try {
io.on('connection', socket => {
console.log("client Connected");
});

routes/test.js

const express = require('express');

const router = express.Router();
const testController = require('../controllers/test');
const isAuth=require('../auth/auth');
//http://localhost:3001/test/test
router.get('/test', isAuth, testController.test);
router.get('/login', testController.login);
// router.get('/login/:token', testController.login); //req.params.token
router.post('/login', testController.login);
router.get('/bcrypt', testController.bcrypt);
router.get('/bcryptComp', testController.bcryptComp);

module.exports = router;

auth/auth.js

const jwt = require('jsonwebtoken');

module.exports = (req, res, next) => {
const authHeader = req.get('Authorization');
if (!authHeader) {
// const error=new Error('Not Authorization');
error.statusCode = 401;
throw error;
}
const token = authHeader.split(' ')[0];
console.log(">>>>>token:", token);

let decodedToken;
try {
decodedToken = jwt.verify(token, 'somesupersecretsecret');
// decodedToken = jwt.verify(token, 'YWpheTpzb21lc3VwZXJzZWNyZXRzZWNyZXQ=');
console.log(">>>>>decodedToken:", decodedToken);
} catch (err) {
err.statusCode = 400;
throw err;
}
if (!decodedToken) {
const error = new Error('Not authenticated');
error.statusCode = 401;
throw error;
}
req.userId = decodedToken.userId;
// console.log(">>>>>", decodedToken);
next();
};

controler/test.js

const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs');
module.exports.test = (req, res, next) => {
console.log(">>>>");
res
.status(200)
.json({
name: "Ajay Tast code",
title: "Test Case"
});
};
module.exports.bcrypt = (req, res, next) => {
//encript password
bcrypt
.hash('ajay', 12)
.then((enPass) => {
console.log(">>>bcrypt", enPass);
res.write(enPass);
res.end();
});
};
module.exports.bcryptComp = (req, res, next) => {
//encript password
var data = req.query;
console.log(">>>>bcryptComp", data);

let isEqual = bcrypt.compare(data.password, '$2a$12$V4OnUc4w9GVILvnyKZzRY.na3.tr8dz/ECdObP3ZYKszrgWM.saqi');
res.write(isEqual);
res.end();
};
module.exports.login = (req, res, next) => {
var data = req.query;
console.log(">>>>ajlogin", data);

//encript password
bcrypt
.hash('ajay', 12)
.then((enPass) => {
console.log(">>>enPass", enPass)
});
//Compair Password
let isEqual = bcrypt.compare(data.password, '$2a$12$qFeHX9Q7PtaffJNIagJCsOVJhum1b3NPquS9RTjtyG6UGCRytPtgm');
console.log(">>>>isEqual", isEqual);
if (!isEqual) {
const error = new Error('Wrong Passwor');
error.statusCode = 401;
throw error;
}
const token = jwt.sign(data, 'rajpoot', {
expiresIn: '1h'
});
console.log(">>>>token", token);
res
.status(200)
.json({
"token": token
});
};

socket.js

module.exports={
init:httpServer=>{
io=rewuire('socket.io')(httpServer);
return io;
},
getIO:()=>{
if(!io){
throw new Error('Sockrt.io not initialzed');
}
return io;
}
}





No comments:

Post a Comment

IIS deployment support details

  Node JS - IIS deployment support details node: http://go.microsoft.com/?linkid=9784334 IISNode: https://github.com/azure/iisnode/releases/...