ff-admin-server/src/helpers/jwtHelper.ts

42 lines
1.1 KiB
TypeScript
Raw Normal View History

import jwt from "jsonwebtoken";
import { JWTData } from "../type/jwtTypes";
import { JWT_SECRET, JWT_EXPIRATION } from "../env.defaults";
export abstract class JWTHelper {
static validate(token: string): Promise<string | jwt.JwtPayload> {
return new Promise<string | jwt.JwtPayload>((resolve, reject) => {
jwt.verify(token, JWT_SECRET, (err, decoded) => {
if (err) reject(err.message);
else resolve(decoded);
});
});
}
static create(data: JWTData): Promise<string> {
return new Promise<string>((resolve, reject) => {
jwt.sign(
data,
JWT_SECRET,
{
expiresIn: JWT_EXPIRATION,
},
(err, token) => {
if (err) reject(err.message);
else resolve(token);
}
);
});
}
static decode(token: string): Promise<string | jwt.JwtPayload> {
return new Promise<string | jwt.JwtPayload>((resolve, reject) => {
try {
let decoded = jwt.decode(token);
resolve(decoded);
} catch (err) {
reject(err.message);
}
});
}
}