modarb-be / src /helpers /jwt.helper.ts
moahmedwafy's picture
feat: admin auth
a27d3dd
raw
history blame
1.13 kB
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();
});
};
}
}