import jwt from 'jsonwebtoken'; const ACCESS_SECRET = process.env.JWT_ACCESS_SECRET || 'dev-access-secret-minimum-32-characters'; const REFRESH_SECRET = process.env.JWT_REFRESH_SECRET || 'dev-refresh-secret-minimum-32-characters'; const ACCESS_EXPIRY = process.env.JWT_ACCESS_EXPIRY || '15m'; const REFRESH_EXPIRY = process.env.JWT_REFRESH_EXPIRY || '7d'; export interface TokenPayload { userId: string; tenantId: string; email: string; role: string; } export function signAccessToken(payload: TokenPayload): string { return jwt.sign(payload, ACCESS_SECRET, { expiresIn: ACCESS_EXPIRY }); } export function signRefreshToken(payload: TokenPayload): string { return jwt.sign(payload, REFRESH_SECRET, { expiresIn: REFRESH_EXPIRY }); } export function verifyAccessToken(token: string): TokenPayload { return jwt.verify(token, ACCESS_SECRET) as TokenPayload; } export function verifyRefreshToken(token: string): TokenPayload { return jwt.verify(token, REFRESH_SECRET) as TokenPayload; } export function generateTokenPair(payload: TokenPayload) { return { accessToken: signAccessToken(payload), refreshToken: signRefreshToken(payload), }; }