Exemplo n.º 1
0
        public bool AlterarSenha(String login, String senha, String novaSenha, String confirmarNovaSenha, BancoDeDados banco = null)
        {
            if (!_validar.AlterarSenha(login, senha, novaSenha, confirmarNovaSenha))
            {
                return(false);
            }

            Usuario usuario = _busUsuario.ValidarUsuario(login, GerenciarAutenticacao.Criptografar(login, senha));

            if (usuario == null || usuario.Id == 0)
            {
                Validacao.Add(Mensagem.Login.LoginSenhaInvalido);
                return(false);
            }

            string senhaNovaHash = GerenciarAutenticacao.Criptografar(login, novaSenha);

            if (_busUsuario.VerificarHistoricoSenha(usuario.Id, senhaNovaHash, _configUsuario.Obter <Int32>(ConfiguracaoUsuario.keyQtdVerificaoUltimaSenha)))
            {
                Validacao.Add(Mensagem.Login.HistoricoSenha(_configUsuario.Obter <Int32>(ConfiguracaoUsuario.keyQtdVerificaoUltimaSenha)));
                return(false);
            }

            CredenciadoPessoa    credenciado = _da.ObterCredenciadoExecutor(login);
            AutenticacaoExecutor executor    = GerenciarAutenticacao.ObterAutenticacaoExecutor();

            if (executor == null)
            {
                executor           = new AutenticacaoExecutor();
                executor.Tipo      = (int)eCredenciadoSituacao.Ativo;
                executor.UsuarioId = credenciado.Usuario.Id;
                executor.Tid       = credenciado.Tid;
            }

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado))
            {
                bancoDeDados.IniciarTransacao();
                _busUsuario.AlterarSenha(usuario, senhaNovaHash, executor, bancoDeDados);

                _da.AlterarSenha(usuario.Id, credenciado, bancoDeDados);
                bancoDeDados.Commit();
            }

            Validacao.Add(Mensagem.Login.SenhaAlterada);

            return(true);
        }