2024-08-22 09:40:31 +00:00
|
|
|
import jwt from "jsonwebtoken";
|
|
|
|
import { JWTData } from "../type/jwtTypes";
|
2024-08-25 16:07:34 +00:00
|
|
|
import { JWT_SECRET, JWT_EXPIRATION } from "../env.defaults";
|
2024-08-22 09:40:31 +00:00
|
|
|
|
|
|
|
export abstract class JWTHelper {
|
|
|
|
static validate(token: string): Promise<string | jwt.JwtPayload> {
|
|
|
|
return new Promise<string | jwt.JwtPayload>((resolve, reject) => {
|
2024-08-25 16:07:34 +00:00
|
|
|
jwt.verify(token, JWT_SECRET, (err, decoded) => {
|
2024-08-22 09:40:31 +00:00
|
|
|
if (err) reject(err.message);
|
|
|
|
else resolve(decoded);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
static create(data: JWTData): Promise<string> {
|
|
|
|
return new Promise<string>((resolve, reject) => {
|
|
|
|
jwt.sign(
|
|
|
|
data,
|
2024-08-25 16:07:34 +00:00
|
|
|
JWT_SECRET,
|
2024-08-22 09:40:31 +00:00
|
|
|
{
|
2024-08-25 16:07:34 +00:00
|
|
|
expiresIn: JWT_EXPIRATION,
|
2024-08-22 09:40:31 +00:00
|
|
|
},
|
|
|
|
(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);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|