eletrotupi / tcc/ api/src/lib/jwt.ts6b55ce5b08c2cf596a6f02f8e37e459809efd41d
1022 B | 34 lines Raw
1
import jwt from 'jsonwebtoken';
2
import crypto from 'crypto';
3

4
const JWT_SECRET = process.env.JWT_SECRET || 'development-secret-change-in-production';
5
const JWT_EXPIRES_IN = '7d';
6
const PASSWORD_RESET_EXPIRES_IN = '1h';
7

8
interface TokenPayload {
9
  userId: number;
10
  email: string;
11
}
12

13
export const generateToken = (userId: number, email: string): string => {
14
  const payload: TokenPayload = { userId, email };
15
  return jwt.sign(payload, JWT_SECRET, { expiresIn: JWT_EXPIRES_IN });
16
};
17

18
export const verifyToken = (token: string): TokenPayload => {
19
  return jwt.verify(token, JWT_SECRET) as TokenPayload;
20
};
21

22
export const generatePasswordResetToken = (): string => {
23
  return crypto.randomBytes(32).toString('hex');
24
};
25

26
export const getPasswordResetExpiration = (): Date => {
27
  const expirationTime = new Date();
28
  expirationTime.setHours(expirationTime.getHours() + 1); // 1 hour from now
29
  return expirationTime;
30
};
31

32
export const isTokenExpired = (expirationDate: Date): boolean => {
33
  return new Date() > expirationDate;
34
};