public async Task <IActionResult> ValidarRecuperarSenha([FromBody] SenhasHashsViewModel senhasHashsViewModel) { if (!ModelState.IsValid) { return(BadRequest()); } var resultado = await _loginService.ValidarRestaurarSenha(senhasHashsViewModel); if (resultado.ExibicaoMensagem != null) { return(StatusCode(resultado.ExibicaoMensagem.StatusCode, resultado)); } return(Ok(resultado)); }
public async Task <RetornoControllerViewModel <ExibicaoMensagemViewModel, InserirSenhaResultadoViewModel> > ValidarRestaurarSenha(SenhasHashsViewModel senhasHashs) { RetornoControllerViewModel <ExibicaoMensagemViewModel, InserirSenhaResultadoViewModel> retornoController = new RetornoControllerViewModel <ExibicaoMensagemViewModel, InserirSenhaResultadoViewModel>(); if (senhasHashs.Senha != senhasHashs.ConfirmarSenha) { ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel { Cabecalho = "Solicitação inválida", MensagemCurta = "Solicitação inválida", Detalhes = "Senha e Confirmação de Senha não estão iguais.", StatusCode = StatusCodes.Status400BadRequest }; retornoController.ExibicaoMensagem = exibicaoMensagem; return(retornoController); } if (string.IsNullOrEmpty(senhasHashs.IdRecuperarSenhaHash) || string.IsNullOrEmpty(senhasHashs.TokenHash)) { ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel { Cabecalho = "Solicitação inválida", MensagemCurta = "Solicitação inválida", Detalhes = "Acesse a página de login e solicte a criação de um novo usuário.", StatusCode = StatusCodes.Status404NotFound }; retornoController.ExibicaoMensagem = exibicaoMensagem; return(retornoController); } try { var idRecuperarSenhaHashStr = Base64.Decode(senhasHashs.IdRecuperarSenhaHash, true); var tokenStr = Base64.Decode(senhasHashs.TokenHash, true); Guid idRecuperarSenha; if (!Guid.TryParse(idRecuperarSenhaHashStr, out idRecuperarSenha)) { ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel { Cabecalho = "Solicitação inválida", MensagemCurta = "Solicitação inválida", Detalhes = "Acesse a página de login e solicte a criação de um novo usuário.", StatusCode = StatusCodes.Status400BadRequest }; retornoController.ExibicaoMensagem = exibicaoMensagem; return(retornoController); } var recuperarSenha = await _unitOfWork.GetRepositoryAsync <RecuperarSenha>().GetOne(x => x.Id == idRecuperarSenha && x.Token == tokenStr); if (recuperarSenha == null) { ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel { Cabecalho = "Solicitação inválida", MensagemCurta = "Solicitação inválida", Detalhes = "Acesse a página de login e solicte a criação de um novo usuário.", StatusCode = StatusCodes.Status204NoContent }; retornoController.ExibicaoMensagem = exibicaoMensagem; return(retornoController); } var usuario = _usuarioRepository.GetSingleOrDefault(x => x.Login == recuperarSenha.Pessoa.Email); if (usuario == null || string.IsNullOrEmpty(usuario.Senha)) { ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel { Cabecalho = "Solicitação inválida", MensagemCurta = "Solicitação inválida", Detalhes = "Não foi cadastrada uma senha inicial.", StatusCode = StatusCodes.Status400BadRequest }; retornoController.ExibicaoMensagem = exibicaoMensagem; return(retornoController); } if (recuperarSenha.Ativo == false || recuperarSenha.DataExpiracao < DateTime.Now) { ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel { Cabecalho = "Solicitação inválida", MensagemCurta = "Solicitação inválida", Detalhes = "Acesse a página de login e solicte a criação de um novo usuário.", StatusCode = StatusCodes.Status404NotFound }; retornoController.ExibicaoMensagem = exibicaoMensagem; return(retornoController); } retornoController.Objeto = await TrocarSenha(recuperarSenha.Id, senhasHashs.Senha); return(retornoController); } catch (Exception e) { ExibicaoMensagemViewModel exibicaoMensagem = new ExibicaoMensagemViewModel { Cabecalho = "Ocorreu um erro", MensagemCurta = "Ocorreu um erro", Detalhes = e.Message, StatusCode = StatusCodes.Status400BadRequest }; retornoController.ExibicaoMensagem = exibicaoMensagem; return(retornoController); } }