Autenticación - bootcamp-uchile-2026/grupo-4-backend GitHub Wiki

Autenticación

Servicio encargado de exponer las operaciones de registro e inicio de sesión de usuarios del ecommerce.

Endpoints

  • POST /autenticacion/registro - Registrar usuario
  • POST /autenticacion/login - Iniciar sesión

Modelo

Autenticacion

El modelo Autenticacion declara el siguiente atributo:

Campo Tipo Descripción
email string Correo electrónico asociado al usuario

DTOs

CreateAutenticacionDto

DTO de entrada para registrar un usuario. Extiende CreateUsuarioDto del módulo Usuarios.

Campos

Campo Tipo Requerido en el contrato Descripción
nombre string Sí Nombre del usuario
apellido string Sí Apellido del usuario
email string Sí Correo electrónico del usuario
telefono string Sí Teléfono del usuario
password string Sí Contraseña del usuario

Nota sobre validaciones: en la versión revisada, CreateUsuarioDto describe estos campos mediante @ApiProperty, pero no contiene decoradores de class-validator. Swagger muestra una longitud orientativa de entre 8 y 72 caracteres para password; esa restricción no está implementada en este DTO.

Ejemplo de Request Body

{
  "nombre": "Juan",
  "apellido": "Pérez",
  "email": "[email protected]",
  "telefono": "+56912345678",
  "password": "MiPassword123!"
}

LoginAutenticacionDto

DTO utilizado para enviar credenciales de inicio de sesión.

Campo Tipo Requerido Validación
email string Sí @IsEmail() comprueba el formato de correo electrónico
password string Sí @IsString(), @IsNotEmpty() y @Matches(/\S/) impiden valores no textuales, vacíos o compuestos únicamente por espacios

Swagger declara para la contraseña una longitud de referencia de 8 a 72 caracteres, pero el DTO de login no utiliza @MinLength() ni @MaxLength() para exigirla.

Ejemplo de Request Body

{
  "email": "[email protected]",
  "password": "MiPassword123!"
}

UsuarioResponseDto

El registro devuelve UsuarioResponseDto, definido en el módulo Usuarios. El servicio de Autenticación construye su respuesta con estos campos:

Campo Tipo Descripción
id number Identificador del usuario
nombre string Nombre del usuario
apellido string Apellido del usuario
email string Correo electrónico
telefono string Teléfono del usuario

La contraseña no se incluye en la respuesta.

Respuesta de inicio de sesión

El endpoint de login devuelve un objeto con una propiedad mensaje de tipo string.


Endpoints detallados

POST /autenticacion/registro

Recibe los datos necesarios para el registro de un usuario.

Request Body

Utiliza CreateAutenticacionDto.

{
  "nombre": "Juan",
  "apellido": "Pérez",
  "email": "[email protected]",
  "telefono": "+56912345678",
  "password": "MiPassword123!"
}

Response — 201 Created

Devuelve la información pública del usuario en la estructura de UsuarioResponseDto.

{
  "id": 1,
  "nombre": "Juan",
  "apellido": "Pérez",
  "email": "[email protected]",
  "telefono": "+56912345678"
}

No se retorna la contraseña.

POST /autenticacion/login

Recibe las credenciales de acceso de un usuario.

Request Body

Utiliza LoginAutenticacionDto.

{
  "email": "[email protected]",
  "password": "MiPassword123!"
}

Response — 201 Created

{
  "mensaje": "Inicio de sesión simulado correctamente"
}

Response — 400 Bad Request

Cuando está habilitado ValidationPipe, los datos que incumplen las validaciones del DTO pueden generar HTTP 400. Por ejemplo, un correo con formato inválido o una contraseña formada solo por espacios.

El formato exacto del cuerpo de error depende de la configuración global de validación y filtros de excepciones.


Consideraciones de integración

  • Ambos endpoints aceptan sus datos mediante el cuerpo de la solicitud JSON.
  • La respuesta de registro utiliza UsuarioResponseDto, compartido con el módulo Usuarios.
  • La documentación OpenAPI/Swagger del proyecto es la referencia para consultar los contratos expuestos por el backend.