File size: 1,027 Bytes
a6fbb8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import jwt from "jsonwebtoken";

export class jwtHelper {
    static generateToken(payload: any) {
        return jwt.sign(payload, process.env.ACCESS_TOKEN_SECRET || "secret", { expiresIn: '30d' })
    }

    static verifyToken(role: any) {
        return (req: any, res: any, next: any) => {
            let authHeader = req.headers['authorization']
            const token = authHeader && authHeader.split(" ")[1]
            if (token) {
                jwt.verify(token, process.env.ACCESS_TOKEN_SECRET || "secret", (err: any, tokenData: any) => {
                    if (err) return res.status(403).json({ success: false, code: 403, message: "Invalid Token!" })
                    if (!role.includes(tokenData.role)) return res.status(401).json({ success: false, code: 401, message: "Unauthorized" })
                    req.tokenData = tokenData;
                    next();
                })
    
            } else return res.status(401).json({ success: false, code: 401, message: "Unauthorized" })
        }
    }
}