mongodb
Signed-off-by: Omar Sánchez Pizarro <omar.sanchez@pistacero.net>
This commit is contained in:
30
web/backend/middlewares/adminAuth.js
Normal file
30
web/backend/middlewares/adminAuth.js
Normal file
@@ -0,0 +1,30 @@
|
||||
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' });
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user