El módulo de usuarios gestiona las cuentas del personal que opera Biblioteca Popular La Palabra. Es importante distinguir entre dos conceptos distintos: los socios son los miembros registrados de la biblioteca que solicitan préstamos, mientras que los usuarios son las cuentas de acceso al sistema de gestión asignadas al equipo de trabajo (administradores y bibliotecarios). El acceso a este módulo está restringido exclusivamente al rol ADMIN mediante el middlewareDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/camiloivcode/biblioteca-la-palabra/llms.txt
Use this file to discover all available pages before exploring further.
requireRole('ADMIN'). Un usuario con rol BIBLIOTECARIO no puede ver, crear ni modificar cuentas de otros usuarios; cualquier intento devuelve 403 Forbidden.
Roles
El sistema define exactamente dos roles, cada uno con un conjunto de permisos diferente:| Rol | Acceso y permisos |
|---|---|
ADMIN | Acceso completo al sistema. Gestión de usuarios, socios, materiales, préstamos, catálogos y reportes. |
BIBLIOTECARIO | Gestión de socios, materiales, préstamos y reportes. Sin acceso al módulo de usuarios. |
Campos del usuario
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
nombre | String | ✅ | Nombre completo del usuario |
email | String | ✅ | Dirección de correo electrónico. Debe ser única en el sistema. |
password | String | ✅ | Contraseña. Mínimo 8 caracteres, al menos una mayúscula y un dígito. Se almacena con hash bcrypt. |
role | Enum | ✅ | Rol del usuario: ADMIN o BIBLIOTECARIO |
activo | Boolean | — | Estado de la cuenta. true por defecto. Las cuentas inactivas no pueden iniciar sesión. |
Las respuestas de la API nunca devuelven el campo
password, ni en listados ni en consultas individuales. El hash solo existe en la base de datos.Restricciones de contraseña
Las contraseñas de los usuarios deben cumplir los siguientes requisitos, validados en el backend al crear una cuenta:- Longitud mínima de 8 caracteres
- Al menos una letra mayúscula
- Al menos un dígito numérico
POST /api/users). Al actualizar (PUT /api/users/:id), el campo password es opcional; si se omite, la contraseña existente se conserva sin cambios.
Operaciones
| Método | Ruta | Descripción |
|---|---|---|
GET | /api/users | Lista todos los usuarios del sistema (solo ADMIN). |
GET | /api/users/:id | Obtiene un usuario por ID (solo ADMIN). |
POST | /api/users | Crea una nueva cuenta de usuario (solo ADMIN). |
PUT | /api/users/:id | Actualiza nombre, email o rol de un usuario (solo ADMIN). |
PATCH | /api/users/:id/toggle | Activa o desactiva una cuenta. Alterna el campo activo. |
DELETE | /api/users/:id | Elimina permanentemente una cuenta de usuario. |
Ejemplo: crear un usuario
Ejemplo: respuesta
Activación y desactivación de cuentas
El endpointPATCH /api/users/:id/toggle alterna el campo activo de la cuenta: si estaba activa la desactiva, y si estaba inactiva la activa. No requiere cuerpo en la solicitud.
activo: false son rechazadas en el login y no pueden operar el sistema. La desactivación es reversible; se prefiere sobre la eliminación cuando se desea preservar el historial de acciones del usuario.
Solicitud de registro
Los usuarios del sistema no pueden auto-registrarse. El flujo de alta es el siguiente:- El candidato envía una solicitud a través del formulario público en
/register. - El frontend llama a
POST /api/auth/register-request, que notifica al administrador sin crear ninguna cuenta. - El administrador revisa la solicitud y, si la aprueba, crea la cuenta manualmente desde el módulo de usuarios (
POST /api/users).