e1b36f7e39e375953e4e199680dd3f36adca4939
import jwt from 'jsonwebtoken';
import crypto from 'crypto';
const JWT_SECRET = process.env.JWT_SECRET;
if (!JWT_SECRET) {
throw new Error('JWT_SECRET is not set');
}
const JWT_EXPIRES_IN = '7d';
interface TokenPayload {
userId: number;
email: string;
export const generateToken = (userId: number, email: string): string => {
const payload: TokenPayload = { userId, email };
return jwt.sign(payload, JWT_SECRET, { expiresIn: JWT_EXPIRES_IN });
};
export const verifyToken = (token: string): TokenPayload => {
return jwt.verify(token, JWT_SECRET, { algorithms: ['HS256'] }) as TokenPayload;
export const generatePasswordResetToken = (): string => {
return crypto.randomBytes(32).toString('hex');
export const getPasswordResetExpiration = (): Date => {
const expirationTime = new Date();
expirationTime.setHours(expirationTime.getHours() + 1); // 1 hour from now
return expirationTime;
export const isTokenExpired = (expirationDate: Date): boolean => {
return new Date() > expirationDate;