Spaces:
Sleeping
Sleeping
File size: 829 Bytes
1cf0854 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import jwt from 'jsonwebtoken';
import { Request, Response, NextFunction } from 'express';
export interface AuthenticatedRequest extends Request {
user?: {
userId: number;
tenantId: number;
};
}
export const authenticateToken = (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
if (!token) {
return res.status(401).json({ error: 'Access token required' });
}
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET!) as any;
req.user = {
userId: decoded.userId,
tenantId: decoded.tenantId
};
next();
} catch (error) {
return res.status(403).json({ error: 'Invalid or expired token' });
}
}; |