Files
brainwave/backend/src/utils/tokens.ts
T
2026-04-27 12:52:57 +02:00

27 lines
680 B
TypeScript

import jwt from 'jsonwebtoken'
import crypto from 'crypto'
import { config } from '../config.js'
export interface JwtPayload {
userId: number
email: string
displayName: string
role: 'user' | 'admin'
}
export function signToken(payload: JwtPayload): string {
return jwt.sign(payload, config.jwtSecret, { expiresIn: '24h' })
}
export function verifyToken(token: string): JwtPayload {
return jwt.verify(token, config.jwtSecret) as JwtPayload
}
export function generateVerificationToken(): string {
return crypto.randomBytes(32).toString('hex')
}
export function hashToken(token: string): string {
return crypto.createHash('sha256').update(token).digest('hex')
}