· 5 years ago · Nov 20, 2019, 01:10 PM
1const bgcrypt = require("bcryptjs");
2const jwt = require("jsonwebtoken");
3const {Sequelize} = require('sequelize');
4const request = require('request');
5
6
7const defaultPassword = "Password@123";
8const secretKey = 'R3pioODFUy';
9const Op = Sequelize.Op;
10
11
12module.exports.getToken = (req, res) => {
13 models.User.findOne({
14 where: {username: req.body.username, active: true},
15 attributes: {'exclude': ['updatedAt', 'createdAt', 'otp', 'device_identifier']}
16 }).then(user => {
17 if (!user) return res.status(404).send({"message": 'No user found.'});
18 const passwordIsValid = bgcrypt.compareSync(req.body.password, user.password);
19 if (!passwordIsValid)
20 return res.status(401).send({auth: false, token: null});
21 jwt.sign({id: user.id, username: user.username, group: user.group, unique_id: user.unique_id}, secretKey, {
22 expiresIn: 86400 // expires in 24 hours
23 }, (err, token) => {
24 let user_json = user.toJSON();
25 delete user_json['password'];
26 res.status(200).send({auth: true, token: token, user: user_json});
27 });
28 });
29};
30
31
32module.exports.verifyToken = (req, res, next) => {
33 const token = req.get('x-access-token');
34 // JWT Authentication
35 jwt.verify(token, secretKey, function (err, decoded) {
36 if (err) {
37 console.log(err);
38 return res.status(401).send({auth: false, message: 'Invalid Token'});
39 }
40 req.user = decoded.username;
41 req.group = decoded.group;
42 req.user_id = decoded.id;
43 req.unique_id = decoded.unique_id;
44 next();
45 });
46 };
47};