public async Task AlterarSenhaComTokenRecuperacao(RecuperacaoSenhaDto recuperacaoSenhaDto)
        {
            Usuario usuario = repositorioUsuario.ObterPorTokenRecuperacaoSenha(recuperacaoSenhaDto.Token);

            if (usuario == null)
            {
                throw new NegocioException("Usuário não encontrado.");
            }

            if (!usuario.TokenRecuperacaoSenhaEstaValido())
            {
                throw new NegocioException("Este link expirou. Clique em continuar para solicitar um novo link de recuperação de senha.", 403);
            }

            usuario.ValidarSenha(recuperacaoSenhaDto.NovaSenha);

            var retornoApi = await servicoEOL.AlterarSenha(usuario.Login, recuperacaoSenhaDto.NovaSenha);

            if (!retornoApi.SenhaAlterada)
            {
                throw new NegocioException(retornoApi.Mensagem, retornoApi.StatusRetorno);
            }

            usuario.FinalizarRecuperacaoSenha();
            repositorioUsuario.Salvar(usuario);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> RecuperarSenha([FromForm] RecuperacaoSenhaDto recuperacaoSenhaDto)
        {
            var retorno = await comandosUsuario.AlterarSenhaComTokenRecuperacao(recuperacaoSenhaDto);

            if (!retorno.Autenticado)
            {
                return(StatusCode(401));
            }

            return(Ok(retorno));
        }
        public async Task <IActionResult> RecuperarSenha([FromForm] RecuperacaoSenhaDto recuperacaoSenhaDto)
        {
            await comandosUsuario.AlterarSenhaComTokenRecuperacao(recuperacaoSenhaDto);

            return(Ok());
        }