Controlador para gestionar rutas relacionadas con usuarios.
Requires
- module:express
- module:formidable
- module:../validations/createUsuarioValidations
- module:../repositories/usuariosRepository
- module:../validations/updateUsuarioValidations
- module:../validations/loginUsuarioValidations
- module:js-sha512
- module:../validations/validateObjectIdFormat
- module:../utils/createUserToken
- module:../security/sessionChecker
Methods
-
inner GET /usuarios/:id() → {Object|Object}
-
Ruta para gestionar un usuario específico por su ID.
Parameters:
Name Type Description req.params.idstring ID del usuario (ObjectId de MongoDB)
Returns:
-
Object
-
200 - Datos del usuario
-
Object
-
404 - Usuario no encontrado
Example
GET /usuarios/60d5ecb54d6eb31234567890 Response: 200 OK { "_id": "60d5ecb54d6eb31234567890", "nombre": "Juan Pérez", "email": "juan@example.com", "rol": "usuario", "createdAt": "2023-06-25T12:00:00.000Z", "updatedAt": "2023-06-25T12:00:00.000Z" } -
Object
-
-
inner POST /usuarios() → {Object|Object}
-
Ruta para crear y listar usuarios.
Parameters:
Name Type Attributes Description req.bodyObject Datos del usuario a crear
Properties
Name Type Attributes Default Description nombrestring Nombre del usuario
emailstring Correo electrónico del usuario
passwordstring Contraseña del usuario
rolstring <optional>
'usuario' Rol del usuario (administrador o usuario)
req.files.fotoPerfilFile <optional>
Foto de perfil del usuario
Returns:
-
Object
-
201 - Usuario creado
-
Object
-
400 - Error de validación o usuario existente
Example
POST /usuarios { "nombre": "Juan Pérez", "email": "juan@example.com", "password": "Contraseña123!", "rol": "usuario" } Response: 201 Created { "_id": "60d5ecb54d6eb31234567890", "nombre": "Juan Pérez", "email": "juan@example.com", "rol": "usuario", "createdAt": "2023-06-25T12:00:00.000Z", "updatedAt": "2023-06-25T12:00:00.000Z" } -
Object
-
-
inner POST /usuarios/logins() → {Object|Object}
-
Ruta para gestionar logins de usuarios.
Parameters:
Name Type Description req.bodyObject Credenciales de inicio de sesión
Properties
Name Type Description emailstring Correo electrónico del usuario
passwordstring Contraseña del usuario
Returns:
-
Object
-
201 - Usuario autenticado y token
-
Object
-
401 - Credenciales inválidas
Example
POST /usuarios/logins { "email": "juan@example.com", "password": "Contraseña123!" } Response: 201 Created { "user": { "_id": "60d5ecb54d6eb31234567890", "nombre": "Juan Pérez", "email": "juan@example.com", "rol": "usuario" }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } -
Object
-
-
inner POST /usuarios/logout() → {Object|Object}
-
Ruta para gestionar el cierre de sesión de un usuario.
Parameters:
Name Type Description req.headers.authorizationstring Token de autorización
Returns:
-
Object
-
200 - Mensaje de sesión cerrada
-
Object
-
401 - Token inválido
Example
POST /usuarios/logout Headers: { "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } Response: 200 OK { "message": "Sesión cerrada correctamente" } -
Object
-
-
inner POST /usuarios/verify-token() → {Object|Object}
-
Ruta para verificar si el token sigue siendo válido.
Parameters:
Name Type Description req.headers.authorizationstring Token de autorización
Returns:
-
Object
-
200 - Token válido
-
Object
-
401 - Token inválido o expirado
Example
POST /usuarios/verify-token Headers: { "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } Response: 200 OK { "message": "Token válido" } -
Object
-