示例#1
0
        public async Task <IActionResult> SolicitarIngreso([FromBody] UsuarioSolicitudIngresoDto usuarioSolicitudIngresoDto)
        {
            var respuesta = new RespuestaApiDto();

            try
            {
                var usuarioValido = usuarioSolicitudIngresoDto.EsValido();
                if (!usuarioValido.Key)
                {
                    respuesta.Codigo  = -1;
                    respuesta.Mensaje = usuarioValido.Value;
                }
                else
                {
                    var usuarioEntity = await _usuarioRepository.ObtenerUsuarioPorCorreo(usuarioSolicitudIngresoDto.Correo);

                    if (usuarioEntity == null)
                    {
                        respuesta.Codigo  = -1;
                        respuesta.Mensaje = "usuario y/o contraseña equivocados";
                    }
                    else
                    {
                        var hashPass = Crypto.CrearHashSHA256(usuarioSolicitudIngresoDto.Contrasenna, usuarioEntity.SaltContrasenna);

                        if (usuarioEntity.Bloqueado == true)
                        {
                            respuesta.Codigo  = -2;
                            respuesta.Mensaje = "usuario bloqueado";
                        }
                        else if (usuarioEntity.CorreoValidado == false)
                        {
                            respuesta.Codigo  = -3;
                            respuesta.Mensaje = "usuario sin correo validado";
                        }
                        else if (!usuarioEntity.HashContrasenna.Equals(hashPass))
                        {
                            respuesta.Codigo  = -4;
                            respuesta.Mensaje = "usuario y/o contraseña equivocados";
                            var bloqueado = await _usuarioRepository.AumentarIntentoUsuario(usuarioEntity.Id);
                        }
                        else
                        {
                            respuesta.Codigo          = 1;
                            respuesta.Mensaje         = "usuario valido";
                            respuesta.ObjetoRespuesta = JwtHelper.GenerarToken(usuarioEntity);
                        }
                        //respuesta.ObjetoRespuesta = usuarioEntity.ToDto();
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"fallo en Post Solicitar Ingreso: {ex}");
                respuesta.Codigo  = 500;
                respuesta.Mensaje = "Excepción, consultar log.";
            }
            return(Ok(respuesta));
        }