2025-01-29 23:37:45 +03:00

32 lines
838 B
TypeScript

import { Response, NextFunction } from 'express';
import { AuthRequest } from './types';
import { extractToken } from './extractToken';
import { validateToken } from './validateToken';
import { getUser } from './getUser';
export async function auth(req: AuthRequest, res: Response, next: NextFunction) {
try {
const token = extractToken(req);
if (!token) {
res.status(401).json({ error: 'No token provided' });
return
}
const payload = validateToken(token);
if (!payload) {
res.status(401).json({ error: 'Invalid token' });
return
}
const user = await getUser(payload.id);
if (!user) {
res.status(401).json({ error: 'User not found' });
return
}
req.user = user;
next();
} catch {
res.status(401).json({ error: 'Authentication failed' });
}
}