35 lines
862 B
TypeScript
35 lines
862 B
TypeScript
import jwt from 'jsonwebtoken'
|
|
|
|
const JWT_SECRET = process.env.JWT_SECRET || 'dev-secret'
|
|
const JWT_REFRESH_SECRET = process.env.JWT_REFRESH_SECRET || 'dev-refresh-secret'
|
|
|
|
export interface JwtPayload {
|
|
id: string
|
|
orgId: string | null
|
|
role: string
|
|
}
|
|
|
|
export function signAccessToken(payload: JwtPayload): string {
|
|
return jwt.sign(payload, JWT_SECRET, { expiresIn: '2h' })
|
|
}
|
|
|
|
export function signRefreshToken(payload: JwtPayload): string {
|
|
return jwt.sign(payload, JWT_REFRESH_SECRET, { expiresIn: '7d' })
|
|
}
|
|
|
|
export function verifyAccessToken(token: string): JwtPayload | null {
|
|
try {
|
|
return jwt.verify(token, JWT_SECRET) as JwtPayload
|
|
} catch {
|
|
return null
|
|
}
|
|
}
|
|
|
|
export function verifyRefreshToken(token: string): JwtPayload | null {
|
|
try {
|
|
return jwt.verify(token, JWT_REFRESH_SECRET) as JwtPayload
|
|
} catch {
|
|
return null
|
|
}
|
|
}
|