@drop-in/new
Version:
A SvelteKit Svelte 5 PocketBase Starter Kit with a CLI
25 lines (20 loc) • 632 B
text/typescript
import { jwtVerify, SignJWT } from 'jose';
export type JWTPayload = {
sub: string;
iat: number;
exp?: number;
};
export async function create_jwt(user_id: string) {
const jwtPayload: JWTPayload = {
sub: user_id,
iat: Math.floor(Date.now() / 1000),
};
return new SignJWT(jwtPayload)
.setProtectedHeader({ alg: 'HS256' })
.setExpirationTime('30days')
.sign(new TextEncoder().encode(process.env.JWT_SECRET));
}
export async function verify_access_token(jwt: string): Promise<JWTPayload> {
const { payload } = await jwtVerify(jwt, new TextEncoder().encode(process.env.JWT_SECRET));
return payload as JWTPayload;
}