Spaces:
Sleeping
Sleeping
import jwt from "jsonwebtoken"; | |
import { config } from "../configs/config"; | |
import { IJwtLoginPayload } from "@common/interfaces/jwt-payload.interface"; | |
export class JwtHelper { | |
static generateToken(payload: IJwtLoginPayload) { | |
return jwt.sign(payload, config.jwt.secret, { | |
expiresIn: config.jwt.expiresIn, | |
}); | |
} | |
static verifyToken(role: any) { | |
return (req: any, res: any, next: any) => { | |
let authHeader = req.headers["authorization"]; | |
const token = authHeader && authHeader.split(" ")[1]; | |
if (!token) { | |
return res | |
.status(401) | |
.json({ success: false, code: 401, message: "Unauthorized" }); | |
} | |
jwt.verify(token, config.jwt.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(); | |
}); | |
}; | |
} | |
} | |