· 4 years ago · Aug 05, 2021, 11:52 AM
1const jwt = require('jsonwebtoken');
2const UserManager = require('./user.js');
3
4class JWT{
5 static secretKey = "s56asd814";
6
7 static createToken(id){
8 const token = jwt.sign({
9 id: id
10 }, this.secretKey, { expiresIn: '1h' });
11
12 return token;
13 }
14
15 static isValid(cookie){
16 if(cookie) {
17
18 const token = cookie.split('=')[1];
19
20 jwt.verify(token, this.secretKey, async function(err, decode) {
21
22 if(decode === undefined){
23 console.log("Token is broken.");
24 return false;
25 }
26
27 const currentDate = Math.floor(Date.now() / 1000);
28
29 if(currentDate >= decode.exp){
30 console.log("Token has expired.");
31 return false;
32 }
33
34 const result = await UserManager.isUserExists({
35 id: decode.id
36 });
37
38 if(!result){
39 console.log("Invalid token - user does not exists.");
40 return false;
41 }
42 });
43
44 return true;
45 }
46
47 console.log("Invalid token - empty cookie");
48 return false;
49 }
50
51 static decodeJWT(token){
52 return jwt.decode(token);
53 }
54}
55
56module.exports = JWT;
57