34 lines
749 B
TypeScript
34 lines
749 B
TypeScript
import { createDecoder, createSigner, createVerifier } from "fast-jwt";
|
|
import { jwt } from "#environment/jwt";
|
|
|
|
import type { UserSession } from "#types/config";
|
|
|
|
class JWTService {
|
|
private readonly signer;
|
|
private readonly verifier;
|
|
private readonly decoder;
|
|
|
|
constructor() {
|
|
this.signer = createSigner({
|
|
key: jwt.secret,
|
|
expiresIn: jwt.expiration,
|
|
});
|
|
this.verifier = createVerifier({ key: jwt.secret });
|
|
this.decoder = createDecoder();
|
|
}
|
|
|
|
sign(payload: UserSession): string {
|
|
return this.signer(payload);
|
|
}
|
|
|
|
verify(token: string): UserSession {
|
|
return this.verifier(token);
|
|
}
|
|
|
|
decode(token: string): UserSession {
|
|
return this.decoder(token);
|
|
}
|
|
}
|
|
|
|
export const jwtService = new JWTService();
|
|
export { JWTService };
|