コード例 #1
0
ファイル: LoginController.cs プロジェクト: jonassilva4899/nqs
        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));
        }
コード例 #2
0
        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);
            }
        }