(
payload: { userId: string; username: string; role: UserRole; status: UserStatus },
secret: string,
ttlMs = 24 * 60 * 60 * 1000,
)
| 46 | } |
| 47 | |
| 48 | export function issueUserToken( |
| 49 | payload: { userId: string; username: string; role: UserRole; status: UserStatus }, |
| 50 | secret: string, |
| 51 | ttlMs = 24 * 60 * 60 * 1000, |
| 52 | ): string { |
| 53 | const full: UserTokenPayload = { ...payload, exp: Date.now() + ttlMs }; |
| 54 | const body = base64url(JSON.stringify(full)); |
| 55 | return `${body}.${sign(body, secret)}`; |
| 56 | } |
| 57 | |
| 58 | export function verifyUserToken(token: string, secret: string): Omit<UserTokenPayload, "exp"> | null { |
| 59 | const idx = token.lastIndexOf("."); |
no test coverage detected