31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
import { getUser } from '../services/mongodb.js';
|
|
|
|
// Middleware para verificar que el usuario es administrador
|
|
export async function adminAuthMiddleware(req, res, next) {
|
|
// Debe estar autenticado primero (requiere basicAuthMiddleware antes)
|
|
if (!req.user || !req.user.username) {
|
|
return res.status(401).json({ error: 'Authentication required', message: 'Se requiere autenticación' });
|
|
}
|
|
|
|
try {
|
|
const user = await getUser(req.user.username);
|
|
|
|
if (!user) {
|
|
return res.status(401).json({ error: 'Invalid user', message: 'Usuario no encontrado' });
|
|
}
|
|
|
|
const userRole = user.role || 'user';
|
|
|
|
if (userRole !== 'admin') {
|
|
return res.status(403).json({ error: 'Forbidden', message: 'Se requieren permisos de administrador' });
|
|
}
|
|
|
|
// Usuario es admin, continuar
|
|
next();
|
|
} catch (error) {
|
|
console.error('Error verificando permisos de admin:', error);
|
|
res.status(500).json({ error: 'Internal server error', message: 'Error verificando permisos' });
|
|
}
|
|
}
|
|
|