Files
backbone/src/access/access.token.ts
Morten Olsen 521ffd395f init
2025-10-15 17:55:21 +02:00

37 lines
815 B
TypeScript

import { z } from 'zod';
import jwt from 'jsonwebtoken';
import { statementSchema } from './access.schemas.ts';
type AccessTokensOptions = {
secret: string | Buffer;
};
const tokenBodySchema = z.object({
statements: z.array(statementSchema),
});
type TokenBody = z.infer<typeof tokenBodySchema>;
class AccessTokens {
#options: AccessTokensOptions;
constructor(options: AccessTokensOptions) {
this.#options = options;
}
public generate = (options: TokenBody) => {
const { secret } = this.#options;
const token = jwt.sign(options, secret);
return token;
};
public validate = (token: string) => {
const { secret } = this.#options;
const data = jwt.verify(token, secret);
const parsed = tokenBodySchema.parse(data);
return parsed;
};
}
export { AccessTokens };