usuariosController

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.id string

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"
}

inner POST /usuarios() → {Object|Object}

Ruta para crear y listar usuarios.

Parameters:
Name Type Attributes Description
req.body Object

Datos del usuario a crear

Properties
Name Type Attributes Default Description
nombre string

Nombre del usuario

email string

Correo electrónico del usuario

password string

Contraseña del usuario

rol string <optional>
'usuario'

Rol del usuario (administrador o usuario)

req.files.fotoPerfil File <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"
}

inner POST /usuarios/logins() → {Object|Object}

Ruta para gestionar logins de usuarios.

Parameters:
Name Type Description
req.body Object

Credenciales de inicio de sesión

Properties
Name Type Description
email string

Correo electrónico del usuario

password string

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..."
}

inner POST /usuarios/logout() → {Object|Object}

Ruta para gestionar el cierre de sesión de un usuario.

Parameters:
Name Type Description
req.headers.authorization string

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"
}

inner POST /usuarios/verify-token() → {Object|Object}

Ruta para verificar si el token sigue siendo válido.

Parameters:
Name Type Description
req.headers.authorization string

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"
}