lhdn_api_simulation/authorization/middlewares/verify.user.middleware.js

57 lines
2.0 KiB
JavaScript

const UserModel = require('../../src/users/users.model');
const crypto = require('crypto');
const funcs = require("../../common/functions/funcs");
exports.hasAuthValidFields = (req, res, next) => {
let errors = [];
if (req.body) {
if (!req.body.email) {
errors.push('Missing email field');
}
if (!req.body.password) {
errors.push('Missing password field');
}
if (errors.length) {
return res.status(400).send({errors: errors.join(',')});
} else {
return next();
}
} else {
return res.status(400).send({errors: 'Missing email and password fields'});
}
};
exports.isPasswordAndUserMatch = (req, res, next) => {
UserModel.findByEmail(req.body.email.trim())
.then((user)=>{
if(!user){
res.status(404).send({errors: 'Invalid Login information'});
}else{
let passwordFields = user.password.split('$');
let salt = passwordFields[0];
let fcm = req.body.fcm;
let hash = crypto.createHmac('sha512', salt).update(req.body.password).digest("base64");
// console.log(hash);
// console.log(passwordFields[1]);
if (hash === passwordFields[1]) {
req.body = {
userId: user.id?user.id:"",
email: user.email,
permissionLevel: user.userType,
firstname: user.firstname ,
lastname: user.lastname ,
country: user.country ,
mobile: user.mobile ,
webAccess: 0
};
return next();
} else {
return res.status(400).send({errors: 'Invalid Login information'});
}
}
});
};