Aethel Bot OSS repository! aethel.xyz
bot fun ai discord discord-bot aethel
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 43 lines 1.3 kB view raw
1import { Request, Response, NextFunction } from 'express'; 2import jwt from 'jsonwebtoken'; 3import logger from '../utils/logger'; 4 5if (!process.env.JWT_SECRET) { 6 throw new Error('JWT_SECRET environment variable is required'); 7} 8 9const JWT_SECRET = process.env.JWT_SECRET; 10 11interface JwtPayload { 12 userId: string; 13 username: string; 14 discriminator: string; 15 avatar?: string; 16 iat?: number; 17 exp?: number; 18} 19 20export const authenticateToken = (req: Request, res: Response, next: NextFunction) => { 21 const authHeader = req.headers['authorization']; 22 const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN 23 24 if (!token) { 25 return res.status(401).json({ error: 'Access token required' }); 26 } 27 28 try { 29 const decoded = jwt.verify(token, JWT_SECRET) as unknown as JwtPayload; 30 req.user = decoded; 31 next(); 32 } catch (error) { 33 if (error instanceof jwt.TokenExpiredError) { 34 logger.debug('Expired JWT token used'); 35 return res.status(401).json({ error: 'Token expired' }); 36 } else if (error instanceof jwt.JsonWebTokenError) { 37 logger.debug('Invalid JWT token used'); 38 return res.status(401).json({ error: 'Invalid token' }); 39 } 40 logger.error('JWT verification error:', error); 41 return res.status(500).json({ error: 'Token verification failed' }); 42 } 43};