---
# System prepended metadata

title: RecuperarContrasenaController

---

RecuperarContrasenaController
===

 [TOC]
 
 [[_TOC_]]

VerificarExistenciaUsuario
--

#### Metodo
> Post

#### Request
> * TipoIdentificador: int (constante)
> * Identificador: string

#### Response
> OK
>>HttpStatus :200 OK
>>Titulo
>>Mensaje
>>Token
>>TipoEnvio [{nombre: string, codigo: int}]

> NOK
>>HttpStatus :404 Not Found
>>Titulo: No encontrado
>>Mensaje: No encontrado

#### Caso Uso
```sequence
Usuario No Autenticado->Sistema: ValidarLlave
Sistema-->Usuario No Autenticado: Enviar Token
```

#### :bulb: Criterios
> * Debe validar usuario por tipo de identificador.
> * Si usuario existe, se debe retornar los tipo de envío disponibles para el usuario.
> * Se debe generar y almacenar token único que identifique el proceso de recuperación de contraseña y al usuario.

#### :pushpin: Puntos a considerar
> **Se debe revisar en conjunto el ingresar tambien el recaptcha validandolo por el lado server. Pasandolo tambien por el request**




EnviarCodigo
--

#### Metodo
> Post

#### Request
> * Token: string
> * TipoEnvio: int (constante)

#### Response
> OK
>>HttpStatus : 200 OK 
>>Titulo
>>Mensaje

> NOK
>>HttpStatus :400 Bad Request
>>Titulo: Request incorrecto
>>Mensaje: 

>>HttpStatus : 400 Bad Request
>>Titulo: Error de envío
>>Mensaje: No se pudo enviar correo electrónico o SMS

#### Caso Uso
>Metodo Email
```sequence
Front-->Sistema: Petición
Sistema->HQBDOC EMAIL: Enviar código
HQBDOC EMAIL-->Sistema: Email Enviado
Sistema-->Front: Respuesta Email Enviado
```

>Metodo SMS
```sequence
Front-->Sistema: Petición
Sistema->HQBDOC SMS: Enviar código
HQBDOC SMS-->Sistema: SMS Enviado
Sistema-->Front: Respuesta SMS Enviado
```

#### :bulb: Criterios
> * Validar token (existencia y caducación)
> * Generar y almacenar código único alfanúmerico.
> * Enviar código según TipoEnvio.
> * Almacenar log de envío de código. 
> * Mostrar en el Front el tiempo de validez de la solicitud.

#### :pushpin: Puntos a considerar


ValidarCodigo
--

#### Metodo
> Post

#### Request
> * Token: string
> * Codigo: string

#### Response
> OK
>>HttpStatus :200 OK
>>Titulo: Código Válido.
>>Mensaje: El código ingresado es válido.

> NOK
>>HttpStatus :400 Bad Request
>>Titulo: Request incorrecto
>>Mensaje: 

>>HttpStatus :404 Not Found
>>Titulo: Código no encontrado.
>>Mensaje: Código no encontrado o no pertenece a usuario.

>>HttpStatus :403 Forbidden
>>Titulo: Código Caducado.
>>Mensaje: Código se encuentra caducado. Reenvíe solicitud.

>>HttpStatus :403 Forbidden
>>Titulo: Intentos sobrepasados.
>>Mensaje: Ha sobrepasado la cantidad de intentos para validar el código. Espere la cuota de tiempo para realizar un nuevo intento.

#### Caso Uso
```sequence
Front-->Sistema: Petición
Note right of Sistema: Validar código en DB y cantidad de intentos realizados. 
Sistema-->Front: Envio respuesta
```


#### Puntos a considerar
>

CambiarContrasena
--

#### Metodo
> Post

#### Request
> * Token: string
> * Codigo: string

#### Response
> OK
>>HttpStatus :200 OK
>>Titulo: Contraseña cambiada.
>>Mensaje: Se con ingresado es válido.

> NOK
>>HttpStatus :400 Bad Request
>>Titulo: Request incorrecto
>>Mensaje: 
 
>>HttpStatus :403 Forbidden
>>Titulo: Contraseña no pudo ser cambiada.
>>Mensaje: [varia segun la regla de contraseña que tenga para el cliente]

#### Caso Uso
```sequence
Front-->Sistema: Petición
Note right of Sistema: Validar token y que la constraseña cumpla con reglas de contraseñas. 
Sistema-->Front: Cambio de contraseña
```


#### Puntos a considerar
>
