import { Request, Response, NextFunction } from 'express';
import { AuthService } from './auth';
import { createLogger } from './logger';
const logger = createLogger();
export const authenticateToken = (req: Request, res: Response, next: NextFunction) => {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (!token) {
return res.status(401).json({
error: 'Access token required'
});
}
const user = AuthService.verifyToken(token);
if (!user) {
return res.status(403).json({
error: 'Invalid or expired token'
});
}
(req as any).user = user;
next();
};
export const requireRole = (roles: string[]) => {
return (req: Request, res: Response, next: NextFunction) => {
const user = (req as any).user;
if (!user || !roles.includes(user.role)) {
return res.status(403).json({
error: 'Insufficient permissions'
});
}
next();
};
};