-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauth.js
31 lines (28 loc) · 896 Bytes
/
auth.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const jwt = require("jsonwebtoken");
const db = require("./config/db");
const dotenv = require("dotenv");
dotenv.config();
async function createToken(user) {
return new Promise((resolve) => {
const token = jwt.sign(user, process.env.SECRET_KEY, {expiresIn: "1h"});
resolve(token);
});
}
const verifyToken = (req, res, next) => {
const token = req.cookies.token;
jwt.verify(token, process.env.SECRET_KEY, (err, user) => {
if(err)
return res.sendStatus(403);
else {
req.user = user;
const userType = user.userType;
const username = user.username;
const reqUserType = req.originalUrl.split("/")[1];
if(reqUserType===userType)
next();
else
return res.sendStatus(403);
}
});
}
module.exports = {verifyToken, createToken};