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 usuarioPOST /autenticacion/login- Iniciar sesión
Modelo
Autenticacion
El modelo Autenticacion declara el siguiente atributo:
| Campo | Tipo | Descripción |
|---|---|---|
| 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 |
| 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 |
|---|---|---|---|
| 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 |
| 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.