import { SignJWT, jwtVerify } from "jose"; const JWT_SECRET = new TextEncoder().encode(process.env.JWT_SECRET || "team-board-dev-secret-change-me"); const TOKEN_EXPIRY = "7d"; export interface TokenPayload { sub: string; // username name: string; // display name provider: string; // "local" | "authentik" } export async function createToken(payload: TokenPayload): Promise { return new SignJWT({ ...payload }) .setProtectedHeader({ alg: "HS256" }) .setIssuedAt() .setExpirationTime(TOKEN_EXPIRY) .sign(JWT_SECRET); } export async function verifyToken(token: string): Promise { try { const { payload } = await jwtVerify(token, JWT_SECRET); return payload as unknown as TokenPayload; } catch { return null; } }