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); }
public async Task AlterarSenha(string login, string senhaAtual, string novaSenha) { var autenticacao = await servicoEOL.Autenticar(login, senhaAtual); if (autenticacao == null || autenticacao.Status != AutenticacaoStatusEol.Ok) { throw new NegocioException("Senha atual incorreta.", HttpStatusCode.Unauthorized); } var alteracaoSenha = await servicoEOL.AlterarSenha(login, novaSenha); if (!alteracaoSenha.SenhaAlterada) { throw new NegocioException(alteracaoSenha.Mensagem); } }