Introducción
Ahora que la parte de autenticación está funcionando correctamente, vamos a continuar con el lado administrativo del proyecto. Para esto, necesitaremos crear controladores y rutas específicas para administradores.
Configuración Inicial
Paso 1: Usando Cursor Composer
Como necesitamos crear varios archivos y carpetas, utilizaremos Cursor Composer. Le indicaremos que:
- La autenticación está completa
- Necesitamos avanzar hacia los controladores y rutas de administrador
- Queremos implementar las características administrativas basadas en las especificaciones del archivo
Paso 2: Creación del Controlador de Administrador
El composer creará automáticamente:
- Un nuevo controlador para administradores
- Modificaciones en el modelo de usuarios para agregar el campo
role
(rol) - Rutas específicas para funciones administrativas
Funcionalidades del Controlador de Administrador
El controlador de administrador incluirá las siguientes funciones:
- Obtener todos los usuarios – Para gestión de usuarios
- Obtener todos los libros – Para gestión de inventario
- Gestionar transacciones – Para control de préstamos y devoluciones
Configuración de Rutas y Middleware
Rutas de Administrador
Las rutas de administrador utilizan middleware de autenticación para asegurar que:
- El usuario esté autenticado (middleware
auth
) - El usuario tenga permisos de administrador (middleware
isAdmin
)
Middleware de Verificación de Administrador
El middleware isAdmin
verifica que el campo role
del usuario sea igual a «admin».
Configuración de Endpoints
Endpoints Principales
Una vez configurado, tendremos acceso a los siguientes endpoints administrativos:
- Gestión de usuarios:
GET /admin/users
– Obtener todos los usuariosPUT /admin/users/:id
– Actualizar un usuario específico
- Gestión de libros:
GET /admin/books
– Obtener todos los libros
- Otras funciones administrativas
Pruebas con Postman
Configuración de la Prueba
- Abre Postman y crea una nueva colección llamada «Admin»
- Crea una nueva petición: «Get All Users»
- Configura el método como
GET
- Usa el endpoint correspondiente
Resolución de Errores Comunes
Error: «Cannot find module ‘book’»
Este error aparece porque aún no hemos implementado los modelos de libros y transacciones. Para solucionarlo:
- Solicita al composer que genere los modelos para
Book
yTransaction
- Reinicia el servidor después de crear los modelos
Error: «Route requires a function but got undefined»
Este error indica inconsistencias en la definición de rutas:
- Verifica que todos los controladores estén correctamente exportados
- Asegúrate de que las rutas apunten a las funciones correctas del controlador
- Revisa que no haya funciones callback innecesarias en los archivos de rutas
Error: «bcrypt not found»
Para instalar bcrypt:
bashnpm install bcrypt
Autenticación y Autorización
Configuración del Token
Para acceder a los endpoints de administrador:
- Primero, inicia sesión para obtener el token de autenticación
- En Postman, ve a la pestaña «Authorization»
- Selecciona «Bearer Token»
- Pega el token obtenido del login
Configuración de Roles en la Base de Datos
Si obtienes el error «Access denied. Admin rights required»:
- Accede a MongoDB
- Busca el usuario en la base de datos
- Agrega el campo
role: "admin"
al documento del usuario - Guarda los cambios
Verificación Final
Una vez configurado correctamente el rol de administrador, deberías poder:
- Acceder a todos los endpoints administrativos
- Obtener la lista de usuarios
- Gestionar el contenido de la aplicación
Conclusión
Con estos pasos, habrás implementado exitosamente un sistema de administración completo con autenticación y autorización adecuadas. El sistema ahora puede distinguir entre usuarios regulares y administradores, proporcionando acceso controlado a las funciones administrativas.