eletrotupi / tcc/ api/src/lib/jwt.ts9964dafa6ca2a967df3965c0aebbd9e474e93d3a
1.0 KB | 36 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 [...Array(6)]
24
    .map(() => crypto.randomInt(100))
25
    .join(" ");
26
};
27

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

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