示例#1
0
        public ActionResult LogOff(string msg)
        {
            GerenciarAutenticacao.Deslogar();
            FormsAuthentication.SignOut();

            return(RedirectToAction("Logon", "Autenticacao"));
        }
示例#2
0
        public bool AlterarSenhaFuncionario(Funcionario funcionario, String novaSenha, String confirmarNovaSenha, BancoDeDados banco = null)
        {
            if (!VerificarAlterarFuncionario(funcionario.Id))
            {
                return(false);
            }
            if (!_validar.AlterarSenhaFuncionario(User.Login, novaSenha, confirmarNovaSenha))
            {
                return(false);
            }

            string senhaNovaHash = GerenciarAutenticacao.Criptografar(User.Login, novaSenha);

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

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                bancoDeDados.IniciarTransacao();

                _busUsuario.AlterarSenha(funcionario.Usuario, GerenciarAutenticacao.Criptografar(User.Login, novaSenha), GerenciarAutenticacao.ObterAutenticacaoExecutor(), bancoDeDados);
                _da.AlterarSenha(funcionario.Usuario.Id, null, banco);

                bancoDeDados.Commit();
            }

            Validacao.Add(Mensagem.Funcionario.AlterarSenhaFuncionario);
            return(true);
        }
示例#3
0
        public void Salvar(Administrador obj, String senha, String ConfirmarSenha, bool AlterarSenha)
        {
            BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia();

            try
            {
                if (_validar.Salvar(obj, senha, ConfirmarSenha, AlterarSenha))
                {
                    #region Mensagem
                    Mensagem msgSucesso = Mensagem.Administrador.Salvar;

                    if (obj.Id > 0)
                    {
                        msgSucesso = Mensagem.Administrador.Editar;
                    }
                    #endregion

                    bancoDeDados = BancoDeDados.ObterInstancia();
                    bancoDeDados.IniciarTransacao();
                    GerenciadorTransacao.ObterIDAtual();

                    #region Usuario

                    string hashSenha = GerenciarAutenticacao.Criptografar(obj.Usuario.Login, senha);
                    AutenticacaoExecutor executor = GerenciarAutenticacao.ObterAutenticacaoExecutor();

                    if (obj.Usuario.Id <= 0)
                    {
                        _busUsuario.Salvar(obj.Usuario, hashSenha, executor, bancoDeDados);
                    }
                    else
                    {
                        if (!String.IsNullOrEmpty(senha))
                        {
                            _busUsuario.AlterarSenha(obj.Usuario, hashSenha, executor, bancoDeDados);
                            obj.Situacao = 3;                            //Alterar senha
                        }
                    }
                    #endregion

                    #region Funcionário
                    _da.Salvar(obj, bancoDeDados);
                    #endregion

                    bancoDeDados.Commit();

                    Validacao.Add(msgSucesso);
                }
            }
            catch (Exception exc)
            {
                bancoDeDados.Rollback();
                Validacao.AddErro(exc);
            }
            finally
            {
                bancoDeDados.Dispose();
            }
        }
示例#4
0
        public bool AlterarSituacao(int id, int situacao, string motivo)
        {
            if (_validar.AlterarSituacao(situacao, motivo))
            {
                AutenticacaoExecutor executor = GerenciarAutenticacao.ObterAutenticacaoExecutor();

                _da.AlterarSituacao(id, situacao, motivo);
                Validacao.Add(Mensagem.Funcionario.AlterarSituacao);
                return(true);
            }
            return(false);
        }
示例#5
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);
            }

            //Caso alterar a senha quando logado
            Funcionario          funcionario = _da.ObterFuncionarioExecutor(login);
            AutenticacaoExecutor executor    = GerenciarAutenticacao.ObterAutenticacaoExecutor();

            if (executor == null)
            {
                executor           = new AutenticacaoExecutor();
                executor.Tipo      = (int)eExecutorTipo.Interno;
                executor.UsuarioId = funcionario.Usuario.Id;
                executor.Tid       = funcionario.Tid;
            }

            using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
            {
                bancoDeDados.IniciarTransacao();

                _busUsuario.AlterarSenha(usuario, senhaNovaHash, executor, bancoDeDados);

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

            Validacao.Add(Mensagem.Login.SenhaAlterada);

            return(true);
        }
        private LogonVM RecuperarSenha(LogonVM viewModel, string cpf, string email)
        {
            Validacao.Erros.Clear();

            if (!GerenciarAutenticacao.ValidarRecuperacaoSenha(cpf, email))
            {
                viewModel.EsqueciSenha    = true;
                viewModel.AlterarSenhaMsg = "Será gerada nova chave de validação que lhe permitirá restabelecer o acesso ao sistema. A chave será enviada ao e-mail registrado no seu cadastro do SIMLAM.";
                return(viewModel);
            }

            GerenciarAutenticacao.RecuperarSenha(cpf, email);

            return(viewModel);
        }
示例#7
0
        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
            HttpCookie c = Request.Cookies[FormsAuthentication.FormsCookieName];

            if (c == null)
            {
                return;
            }

            FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(c.Value);
            string login     = ticket.Name;
            string sessionId = ticket.UserData;

            GerenciarAutenticacao.CarregarUser(login, sessionId);
        }
示例#8
0
        public ActionResult TransferirSistema(int id, string motivo)
        {
            TransferirVM vm = new TransferirVM();

            if (_bus.TransferirSistema(id, motivo))
            {
                GerenciarAutenticacao.Deslogar();
                FormsAuthentication.SignOut();
            }
            else
            {
                Administrador adm = _bus.Obter(id);
                vm.Id   = adm.Id;
                vm.Nome = adm.Nome;
            }
            return(Json(new { Msg = Validacao.Erros, @Vm = vm }));
        }
示例#9
0
        public bool AlterarDados(CredenciadoPessoa credenciado, string senha, string confirmarSenha)
        {
            try
            {
                credenciado.Id            = credenciado.Pessoa.CredenciadoId.GetValueOrDefault();
                credenciado.Usuario.Id    = User.UsuarioId;
                credenciado.Usuario.Login = User.Login;

                if (_validar.VerificarAlterarDados(credenciado, senha, confirmarSenha))
                {
                    GerenciadorTransacao.ObterIDAtual();

                    using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado))
                    {
                        bancoDeDados.IniciarTransacao();

                        #region Alterar senha

                        if (credenciado.AlterarSenha)
                        {
                            string hashSenha = GerenciarAutenticacao.Criptografar(credenciado.Usuario.Login, senha);
                            _busUsuario.AlterarSenha(credenciado.Usuario, hashSenha, GerenciarAutenticacao.ObterAutenticacaoExecutor(), bancoDeDados);
                        }

                        #endregion

                        #region Pessoa

                        _pessoaCredenciadoBus.Salvar(credenciado.Pessoa, bancoDeDados);

                        CredenciadoPessoa aux = Obter(credenciado.Id, true);
                        _da.Salvar(aux, bancoDeDados);

                        bancoDeDados.Commit();

                        #endregion
                    }
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(Validacao.EhValido);
        }
示例#10
0
        private void assertLoginSession(String login)
        {
            ControllerContextMock.SetupNormalContext(testController);

            String senha     = "123456";
            String sessionId = "";

            if (GerenciarAutenticacao.ValidarLogOn(login, senha, out sessionId))
            {
                if (!testController.HasToAlterarSenha(login))
                {
                    this.assertNormalLoginBehavior(login, senha);
                }
                else
                {
                    this.assertChangePassLoginBehavior(login, senha);
                }
            }
        }
示例#11
0
        public bool Reativar(CredenciadoPessoa credenciado, String senha, String confirmarSenha)
        {
            try
            {
                if (_validar.ValidarReativar(credenciado.Chave, senha, confirmarSenha))
                {
                    using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado))
                    {
                        bancoDeDados.IniciarTransacao();
                        GerenciadorTransacao.ObterIDAtual();

                        string hashSenha = GerenciarAutenticacao.Criptografar(credenciado.Usuario.Login, senha);

                        AutenticacaoExecutor executor = new AutenticacaoExecutor();
                        executor.Tipo      = (int)eExecutorTipo.Credenciado;
                        executor.Tid       = credenciado.Tid;
                        executor.UsuarioId = credenciado.Usuario.Id;

                        _busUsuario.AlterarSenha(credenciado.Usuario, hashSenha, executor, bancoDeDados);

                        Executor executorHistorico = new Executor();
                        executorHistorico.Id    = credenciado.Id;
                        executorHistorico.Tid   = credenciado.Tid;
                        executorHistorico.Nome  = credenciado.Nome;
                        executorHistorico.Login = credenciado.Usuario.Login;
                        executorHistorico.Tipo  = eExecutorTipo.Credenciado;

                        _da.Ativar(credenciado, bancoDeDados, executorHistorico);

                        bancoDeDados.Commit();
                    }
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }
            return(Validacao.EhValido);
        }
        private static Mock <HttpContextBase> getContextMock(bool isAjaxContext, string login)
        {
            Mock <HttpRequestBase> request = ControllerContextMock.getRequestMock(isAjaxContext);
            Mock <HttpContextBase> context = new Mock <HttpContextBase>();

            context
            .SetupGet(x => x.Request)
            .Returns(request.Object);

            context
            .SetupGet(x => x.Cache)
            .Returns(new Cache());

            HttpContext.Current = new HttpContext(
                new HttpRequest(null, "http://tempuri.org", null),
                new HttpResponse(null)
                );

            GerenciarAutenticacao.CarregarUser(login);

            return(context);
        }
示例#13
0
        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
            HttpCookie c = Request.Cookies[FormsAuthentication.FormsCookieName];

            if (c == null)
            {
                return;
            }

            FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(c.Value);
            string login     = ticket.Name;
            string sessionId = ticket.UserData;

            GerenciarAutenticacao.CarregarUser(login, sessionId);

            #region Alerta de E-PTV

            HttpCookie cookieEPTV = Request.Cookies["eptv"];
            PTVBus     _bus       = new PTVBus();
            if (cookieEPTV != null)
            {
                if (Convert.ToDateTime(cookieEPTV.Value).AddMinutes(5) <= DateTime.Now)
                {
                    //se já tiver se passado 5 minutos ou mais desde que o valor do cookie foi atualizado
                    //substitui o cookie por um novo, com a data atual, e faz a verificação de alerta de EPTV
                    HttpCookie aCookie = new HttpCookie("eptv");
                    aCookie.Value   = DateTime.Now.ToString();
                    aCookie.Expires = DateTime.Now.AddDays(1);
                    Response.Cookies.Add(aCookie);

                    var usuario = (HttpContext.Current.User as EtramitePrincipal)?.EtramiteIdentity ?? null;
                    _bus.VerificaAlertaEPTV(usuario?.FuncionarioId ?? 0, login);                        //emite o alerta
                }
            }

            #endregion Alerta de E-PTV
        }
示例#14
0
        public bool Salvar(Funcionario funcionario, String senha, String ConfirmarSenha)
        {
            try
            {
                if (_validar.Salvar(funcionario, senha, ConfirmarSenha))
                {
                    #region Mensagem

                    Mensagem msgSucesso = Mensagem.Funcionario.Salvar;

                    if (funcionario.Id > 0)
                    {
                        msgSucesso = Mensagem.Funcionario.Editar;
                    }

                    if (funcionario.Id > 0 && funcionario.Tipo != 3)
                    {
                        throw new Exception("Tipo de funcionário inválido");
                    }

                    #endregion


                    #region Arquivos/Diretorio
                    ArquivoBus _busArquivo = new ArquivoBus(eExecutorTipo.Interno);

                    if (funcionario.Arquivo != null && !String.IsNullOrWhiteSpace(funcionario.Arquivo.TemporarioNome))
                    {
                        if (funcionario.Arquivo.Id == 0)
                        {
                            funcionario.Arquivo = _busArquivo.Copiar(funcionario.Arquivo);
                        }
                    }
                    #endregion

                    GerenciadorTransacao.ObterIDAtual();

                    using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
                    {
                        bancoDeDados.IniciarTransacao();

                        #region Usuario

                        string hashSenha = GerenciarAutenticacao.Criptografar(funcionario.Usuario.Login, senha);
                        AutenticacaoExecutor executor = GerenciarAutenticacao.ObterAutenticacaoExecutor();

                        if (funcionario.Usuario.Id <= 0)
                        {
                            _busUsuario.Salvar(funcionario.Usuario, hashSenha, executor, bancoDeDados);
                        }
                        else
                        {
                            if (!String.IsNullOrEmpty(senha))
                            {
                                _busUsuario.AlterarSenha(funcionario.Usuario, hashSenha, executor, bancoDeDados);
                                funcionario.Situacao = 5;                                //Alterar senha
                            }
                        }

                        #endregion


                        #region Arquivos/Banco
                        ArquivoDa arquivoDa = new ArquivoDa();

                        if (funcionario.Arquivo != null && !String.IsNullOrWhiteSpace(funcionario.Arquivo.TemporarioNome))
                        {
                            if (funcionario.Arquivo.Id == 0)
                            {
                                arquivoDa.Salvar(funcionario.Arquivo, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados);
                            }
                        }
                        #endregion


                        _da.Salvar(funcionario, bancoDeDados);
                        bancoDeDados.Commit();
                    }

                    Validacao.Add(msgSucesso);
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(Validacao.EhValido);
        }
        public ActionResult LogOn(string login, string senha, bool?alterarSenha, string novaSenha, string confirmarNovaSenha, string returnUrl)
        {
            LogonVM viewModel = new LogonVM()
            {
                AlterarSenha = alterarSenha ?? false
            };

            viewModel.IsAjaxRequest = Request.IsAjaxRequest();

            try
            {
                string strSessionId = null;
                if (!GerenciarAutenticacao.ValidarLogOn(login, senha, out strSessionId))
                {
                    if (Request.IsAjaxRequest())
                    {
                        return(PartialView("LogOnPartial", new LogonVM()
                        {
                            IsAjaxRequest = Request.IsAjaxRequest()
                        }));
                    }
                    else
                    {
                        return(View(viewModel));
                    }
                }

                FuncionarioBus busFuncionario  = new FuncionarioBus(new FuncionarioValidar());
                string         alterarSenhaMsg = busFuncionario.AlterarSenhaMensagem(login);

                if (!String.IsNullOrEmpty(alterarSenhaMsg))
                {
                    Validacao.Erros.Clear();

                    if (!viewModel.AlterarSenha || !busFuncionario.AlterarSenha(login, senha, novaSenha, confirmarNovaSenha))
                    {
                        viewModel = new LogonVM()
                        {
                            AlterarSenha = true, AlterarSenhaMsg = alterarSenhaMsg
                        };
                        if (Request.IsAjaxRequest())
                        {
                            return(PartialView("LogOnPartial", new LogonVM()
                            {
                                IsAjaxRequest = Request.IsAjaxRequest()
                            }));
                        }
                        else
                        {
                            return(View(viewModel));
                        }
                    }
                }

                FormsAuthentication.SetAuthCookie(login, true);

                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, login, DateTime.Now, DateTime.Now.Add(FormsAuthentication.Timeout), true, strSessionId);
                HttpCookie cookie = Request.Cookies[FormsAuthentication.FormsCookieName];
                cookie.Value = FormsAuthentication.Encrypt(ticket);

                GerenciarAutenticacao.CarregarUser(login);

                BusMenu.Menu = null;

                if (Request.IsAjaxRequest())
                {
                    return(PartialView("LogOnPartial", new LogonVM()
                    {
                        IsAjaxRequest = Request.IsAjaxRequest()
                    }));
                }
                else if (!String.IsNullOrEmpty(returnUrl))
                {
                    return(Redirect(Validacao.QueryParamSerializer(HttpUtility.UrlDecode(returnUrl))));
                }
                else
                {
                    return(RedirectToAction("Index", "Home", Validacao.QueryParamSerializer()));
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            if (Request.IsAjaxRequest())
            {
                return(RedirectToAction("Index", "Home", Validacao.QueryParamSerializer()));
            }
            else
            {
                return(View(viewModel));
            }
        }
        public ActionResult LogOn(string login, string senha, bool?alterarSenha, string novaSenha, string confirmarNovaSenha, string returnUrl, bool?esqueciSenha, bool?verificarTrocarSenha, string email, string cpf)
        {
            LogonVM viewModel = new LogonVM()
            {
                AlterarSenha = alterarSenha ?? false,
                EsqueciSenha = esqueciSenha
            };

            viewModel.IsAjaxRequest = Request.IsAjaxRequest();

            if (esqueciSenha == true)
            {
                viewModel.AlterarSenhaMsg = "Será gerada nova chave de validação que lhe permitirá restabelecer o acesso ao sistema. A chave será enviada ao e-mail registrado no seu cadastro do SIMLAM.";

                if (Request.IsAjaxRequest())
                {
                    return(this.getAjaxLogOnPartial());
                }

                return(View(viewModel));
            }

            if (verificarTrocarSenha == true)
            {
                viewModel = RecuperarSenha(viewModel, cpf, email);

                return(View(viewModel));
            }

            try
            {
                string strSessionId = null;

                if (!GerenciarAutenticacao.ValidarLogOn(login, senha, out strSessionId))
                {
                    if (Request.IsAjaxRequest())
                    {
                        return(this.getAjaxLogOnPartial());
                    }

                    return(View(viewModel));
                }

                CredenciadoBus credenciadoBus = new CredenciadoBus(new CredenciadoValidar());

                string alterarSenhaMsg = credenciadoBus.AlterarSenhaMensagem(login);

                if (!String.IsNullOrEmpty(alterarSenhaMsg))
                {
                    Validacao.Erros.Clear();

                    if (!viewModel.AlterarSenha || !credenciadoBus.AlterarSenha(login, senha, novaSenha, confirmarNovaSenha))
                    {
                        viewModel = new LogonVM()
                        {
                            AlterarSenha = true, AlterarSenhaMsg = alterarSenhaMsg
                        };

                        if (Request.IsAjaxRequest())
                        {
                            return(this.getAjaxLogOnPartial());
                        }

                        return(View(viewModel));
                    }
                }

                this.formsAuthenticationService.SetAuthCookie(login, true);

                FormsAuthenticationTicket ticket =
                    new FormsAuthenticationTicket(1, login, DateTime.Now, DateTime.Now.Add(FormsAuthentication.Timeout), true, strSessionId);

                HttpCookie cookie     = null;
                String     cookieName = this.formsAuthenticationService.FormsCookieName;

                if (cookieName != null)
                {
                    cookie = Request.Cookies[cookieName];
                }

                if (cookie != null)
                {
                    cookie.Value = this.formsAuthenticationService.Encrypt(ticket);
                }

                GerenciarAutenticacao.CarregarUser(login);

                BusMenu.Menu = null;

                if (Request.IsAjaxRequest())
                {
                    return(PartialView("LogOnPartial", new LogonVM()
                    {
                        IsAjaxRequest = Request.IsAjaxRequest()
                    }));
                }

                if (!String.IsNullOrEmpty(returnUrl))
                {
                    return(Redirect(Validacao.QueryParamSerializer(HttpUtility.UrlDecode(returnUrl))));
                }

                return(RedirectToAction("Index", "Home", Validacao.QueryParamSerializer()) as RedirectToRouteResult);;
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            if (Request.IsAjaxRequest())
            {
                return(RedirectToAction("Index", "Home", Validacao.QueryParamSerializer()));
            }

            return(View(viewModel));
        }
示例#17
0
        internal bool Autenticar(string login, String senhaHash, int timeout, out String userSessionId)
        {
            bool usuarioValido = false;

            userSessionId = string.Empty;
            Usuario usuarioAuditoria = new Usuario();

            usuarioAuditoria.Login = login;            //Necessario para auditoria

            try
            {
                usuarioAuditoria.Ip = HttpContext.Current.Request.UserHostAddress;

                #region Busca Usuario/Credenciado e verifica validade
                Usuario usuario = _busUsuario.Obter(login);

                //Deve retornar APENAS se usuario não existir
                if (usuario == null)
                {
                    Validacao.Add(Mensagem.Login.LoginSenhaInvalido);
                    return(false);
                }

                usuarioValido        = String.Equals(usuario.senhaHash, senhaHash);
                usuarioAuditoria.Id  = usuario.Id;
                usuarioAuditoria.TID = usuario.TID;

                //Buscar funcionario e grava num de tentativas
                Funcionario funcionario = _da.ObterFuncionarioLogin(usuario.Id, timeout);

                //Deve retornar APENAS se funcionario não existir
                if (funcionario == null)
                {
                    Validacao.Add(Mensagem.Login.LoginSenhaInvalido);
                    return(false);
                }

                funcionario.Usuario = usuario;
                #endregion

                #region Execução Obrigatoria [Independe de status do funcionario]
                string strSessionForcarLogoff = string.Empty;

                //Não se pode char busUsuario Autenticar antes do metodo no finally!!!
                if (usuarioValido && funcionario.Logado)
                {
                    GerenciarAutenticacao.Deslogar(login, true);

                    if (usuarioValido && funcionario.ForcarLogout)
                    {
                        strSessionForcarLogoff = funcionario.SessionId;

                        if (!String.Equals(funcionario.Usuario.Ip, usuarioAuditoria.Ip))
                        {
                            Validacao.Add(Mensagem.Login.SessaoDerrubada);
                        }
                    }
                }

                #endregion

                #region 2 - Bloqueio
                if (funcionario.Tentativa > _config.Obter <Int32>(ConfiguracaoCredenciado.KeyNumTentativas))
                {
                    funcionario.Situacao = 2;                    // 2 - Bloqueado
                    funcionario.Usuario  = new Usuario()
                    {
                        Login = login
                    };
                    _da.AlterarSituacao(funcionario.Id, funcionario.Situacao, null, funcionario);
                    Validacao.Add(Mensagem.Login.FuncionarioBloqueado);
                    return(false);
                }

                if (funcionario.Situacao == 2)                // 2-Ausente
                {
                    Validacao.Add(Mensagem.Login.SituacaoInvalida(Situacoes.Single(x => x.Id == funcionario.Situacao).Nome));
                    return(false);
                }
                #endregion

                //Fazer aqui
                //Acesso não permitido nestes horários e/ou dia! Entre em contato com o administrador do sistema

                #region 6 - Senha Vencida
                // 6 -Senha Vencida
                if (_da.VerificarSenhaVencida(usuario.Id, funcionario))
                {
                    //Mensagem gerada na interface
                    return(false);
                }
                #endregion

                #region 4 - Ausente
                if (funcionario.Situacao == 4)                // 4-Ausente
                {
                    Validacao.Add(Mensagem.Login.SituacaoInvalida(Situacoes.Single(x => x.Id == funcionario.Situacao).Nome));
                    return(false);
                }
                #endregion

                #region Mensagem Número de tentativas
                if (!usuarioValido && funcionario.Situacao != 2)                //2 - Bloqueado
                {
                    Validacao.Add(Mensagem.Login.NumTentativas(funcionario.Tentativa, _config.Obter <Int32>(ConfiguracaoCredenciado.KeyNumTentativas)));
                }
                #endregion

                //Efetiva a autenticação de credenciado [Atenção para o finally]
                if (usuarioValido)
                {
                    funcionario.SessionId = Guid.NewGuid().ToString();
                    userSessionId         = funcionario.SessionId;             //Parâmetro out deste metodo!!!
                    _da.Autenticar(funcionario, strSessionForcarLogoff);
                }
            }
            catch
            {
                usuarioValido = false;
                throw;
            }
            finally
            {
                //Autentica Usuario, gera historico e linha de auditoria
                _busUsuario.Autenticar(usuarioAuditoria, usuarioValido, (int)eExecutorTipo.Interno);
            }

            return(usuarioValido);
        }
示例#18
0
        public ActionResult LogOn(string login, string senha, bool?alterarSenha, string novaSenha, string confirmarNovaSenha, string returnUrl)
        {
            LogonVM viewModel = new LogonVM()
            {
                AlterarSenha = alterarSenha ?? false
            };

            viewModel.IsAjaxRequest = Request.IsAjaxRequest();

            try
            {
                string strSessionId = null;
                if (!GerenciarAutenticacao.ValidarLogOn(login, senha, out strSessionId))
                {
                    if (Request.IsAjaxRequest())
                    {
                        return(PartialView("LogOnPartial", new LogonVM()
                        {
                            IsAjaxRequest = Request.IsAjaxRequest()
                        }));
                    }
                    else
                    {
                        return(View(viewModel));
                    }
                }

                FuncionarioBus busFuncionario  = new FuncionarioBus(new FuncionarioValidar());
                string         alterarSenhaMsg = busFuncionario.AlterarSenhaMensagem(login);

                if (!String.IsNullOrEmpty(alterarSenhaMsg))
                {
                    Validacao.Erros.Clear();

                    if (!viewModel.AlterarSenha || !busFuncionario.AlterarSenha(login, senha, novaSenha, confirmarNovaSenha))
                    {
                        viewModel = new LogonVM()
                        {
                            AlterarSenha = true, AlterarSenhaMsg = alterarSenhaMsg
                        };
                        if (Request.IsAjaxRequest())
                        {
                            return(PartialView("LogOnPartial", new LogonVM()
                            {
                                IsAjaxRequest = Request.IsAjaxRequest()
                            }));
                        }
                        else
                        {
                            return(View(viewModel));
                        }
                    }
                }

                this.formsAuthenticationService.SetAuthCookie(login, true);

                FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, login, DateTime.Now, DateTime.Now.Add(FormsAuthentication.Timeout), true, strSessionId);

                HttpCookie cookie = null;

                String cookieName = this.formsAuthenticationService.FormsCookieName;

                if (cookieName != null)
                {
                    cookie = Request.Cookies[cookieName];
                }

                if (cookie != null)
                {
                    cookie.Value = this.formsAuthenticationService.Encrypt(ticket);
                }

                //Cria o cookie que é usado para a verificação periódica de E-PTVs aguardando análise.
                #region Insere cookie EPTV

                InsereCookieEPTV();

                #endregion Insere cookie EPTV

                GerenciarAutenticacao.CarregarUser(login);

                BusMenu.Menu = null;

                //Gera a mensagem de alerta de E-PTV (se houver)
                #region Alerta de E-PTV

                var    funcionario = new FuncionarioBus().ObterFuncionarioAutenticacao(login);
                PTVBus _busPTV     = new PTVBus();
                _busPTV.VerificaAlertaEPTV(funcionario.Id, login);

                #endregion Alerta de E-PTV

                if (Request.IsAjaxRequest())
                {
                    return(PartialView("LogOnPartial", new LogonVM()
                    {
                        IsAjaxRequest = Request.IsAjaxRequest()
                    }));
                }
                else if (!String.IsNullOrEmpty(returnUrl))
                {
                    return(Redirect(Validacao.QueryParamSerializer(HttpUtility.UrlDecode(returnUrl))));
                }
                else
                {
                    return(RedirectToAction("Index", "Home", Validacao.QueryParamSerializer()));
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            if (Request.IsAjaxRequest())
            {
                return(RedirectToAction("Index", "Home", Validacao.QueryParamSerializer()));
            }
            else
            {
                return(View(viewModel));
            }
        }
示例#19
0
        public bool Ativar(CredenciadoPessoa credenciado, String senha, String confirmarSenha)
        {
            try
            {
                if (_validar.ValidarAtivar(credenciado, senha, confirmarSenha))
                {
                    using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(UsuarioCredenciado))
                    {
                        Executor executorHistorico = new Executor();
                        executorHistorico.Id    = credenciado.Id;
                        executorHistorico.Tid   = credenciado.Tid;
                        executorHistorico.Nome  = credenciado.Nome;
                        executorHistorico.Login = credenciado.Usuario.Login;
                        executorHistorico.Tipo  = eExecutorTipo.Credenciado;

                        bancoDeDados.IniciarTransacao();
                        GerenciadorTransacao.ObterIDAtual();

                        #region Pessoa

                        using (BancoDeDados bancoDeDadosInterno = BancoDeDados.ObterInstancia())
                        {
                            bancoDeDadosInterno.IniciarTransacao();

                            if (!_pessoaInternoBus.Existe(credenciado.Pessoa.CPFCNPJ, bancoDeDadosInterno))
                            {
                                credenciado.Pessoa = _pessoaCredenciadoBus.Obter(credenciado.Pessoa.Id, bancoDeDados);

                                int id = credenciado.Pessoa.Id;
                                credenciado.Pessoa.Id = 0;

                                #region Juridica Pessoa/Representantes

                                if (credenciado.Pessoa.IsJuridica && credenciado.Pessoa.Juridica.Representantes != null)
                                {
                                    Pessoa pessoaAux = null;

                                    for (int i = 0; i < credenciado.Pessoa.Juridica.Representantes.Count; i++)
                                    {
                                        pessoaAux = credenciado.Pessoa.Juridica.Representantes[i];
                                        int representanteInternoID = _pessoaInternoBus.ObterId(pessoaAux.CPFCNPJ, bancoDeDadosInterno);

                                        if (representanteInternoID == 0)
                                        {
                                            //Cria a pessoa do representante no interno
                                            pessoaAux    = _pessoaCredenciadoBus.Obter(pessoaAux.Id, bancoDeDados);
                                            pessoaAux.Id = 0;

                                            #region Conjuge

                                            if (pessoaAux.Fisica.ConjugeId > 0)
                                            {
                                                int conjugeInternoId = _pessoaInternoBus.ObterId(pessoaAux.Fisica.ConjugeCPF, bancoDeDadosInterno);

                                                if (conjugeInternoId == 0)
                                                {
                                                    // Cria Conjuge do representante no interno
                                                    Pessoa pessoaConjuge = _pessoaCredenciadoBus.Obter(pessoaAux.Fisica.ConjugeId.GetValueOrDefault(), bancoDeDados);
                                                    pessoaConjuge.Id = 0;
                                                    pessoaConjuge.Fisica.ConjugeId = 0;

                                                    _pessoaInternoBus.Salvar(pessoaConjuge, bancoDeDadosInterno, executorHistorico);

                                                    pessoaAux.Fisica.ConjugeId = pessoaConjuge.Id;
                                                }
                                                else
                                                {
                                                    pessoaAux.Fisica.ConjugeId = conjugeInternoId;
                                                }
                                            }

                                            #endregion

                                            _pessoaInternoBus.Salvar(pessoaAux, bancoDeDadosInterno, executorHistorico);

                                            credenciado.Pessoa.Juridica.Representantes[i].Id = pessoaAux.Id;
                                        }
                                        else
                                        {
                                            credenciado.Pessoa.Juridica.Representantes[i].Id = representanteInternoID;
                                        }
                                    }
                                }

                                #endregion

                                #region Fisica Conjuge

                                if (credenciado.Pessoa.IsFisica && credenciado.Pessoa.Fisica.ConjugeId > 0)
                                {
                                    int conjugeInternoId = _pessoaInternoBus.ObterId(credenciado.Pessoa.Fisica.ConjugeCPF, bancoDeDadosInterno);

                                    if (conjugeInternoId == 0)
                                    {
                                        // Cria Conjuge do representante no interno
                                        Pessoa pessoaConjuge = _pessoaCredenciadoBus.Obter(credenciado.Pessoa.Fisica.ConjugeId.GetValueOrDefault(), bancoDeDados);
                                        pessoaConjuge.Id = 0;
                                        pessoaConjuge.Fisica.ConjugeId = 0;

                                        _pessoaInternoBus.Salvar(pessoaConjuge, bancoDeDadosInterno, executorHistorico);

                                        credenciado.Pessoa.Fisica.ConjugeId = pessoaConjuge.Id;
                                    }
                                    else
                                    {
                                        credenciado.Pessoa.Fisica.ConjugeId = conjugeInternoId;
                                    }
                                }

                                #endregion

                                _pessoaInternoBus.Salvar(credenciado.Pessoa, bancoDeDadosInterno, executorHistorico);
                                credenciado.Pessoa.Id = id;
                            }
                        }

                        #endregion

                        #region Usuário

                        string hashSenha = GerenciarAutenticacao.Criptografar(credenciado.Usuario.Login, senha);

                        if (credenciado.Usuario.Id <= 0)
                        {
                            AutenticacaoExecutor executor = new AutenticacaoExecutor();
                            executor.Tipo      = (int)eExecutorTipo.Credenciado;
                            executor.UsuarioId = credenciado.Id;
                            executor.Tid       = credenciado.Tid;
                            _busUsuario.Salvar(credenciado.Usuario, hashSenha, executor, bancoDeDados);
                        }

                        _da.Ativar(credenciado, bancoDeDados, executorHistorico);

                        bancoDeDados.Commit();

                        #endregion
                    }
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(Validacao.EhValido);
        }
示例#20
0
        internal bool Autenticar(string login, String senhaHash, int timeout, out String userSessionId, BancoDeDados banco)
        {
            bool usuarioValido = false;

            userSessionId = string.Empty;
            Usuario usuarioAuditoria = new Usuario();

            usuarioAuditoria.Login = login;            //Necessario para auditoria

            try
            {
                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
                {
                    bancoDeDados.IniciarTransacao();
                    usuarioAuditoria.Ip = HttpContext.Current.Request.UserHostAddress;

                    #region Busca Usuario/Credenciado e verifica validade

                    Usuario usuario = _busUsuario.Obter(login, bancoDeDados);

                    //Deve retornar APENAS se usuario não existir
                    if (usuario == null)
                    {
                        Validacao.Add(Mensagem.Login.LoginSenhaInvalido);
                        return(false);
                    }

                    usuarioValido        = String.Equals(usuario.senhaHash, senhaHash);
                    usuarioAuditoria.Id  = usuario.Id;
                    usuarioAuditoria.TID = usuario.TID;

                    //Buscar Credenciado e grava num de tentativas
                    CredenciadoPessoa credenciado = _da.ObterCredenciadoLogin(usuario.Id, timeout);

                    //Deve retornar APENAS se Credenciado não existir
                    if (credenciado == null)
                    {
                        Validacao.Add(Mensagem.Login.LoginSenhaInvalido);
                        return(false);
                    }

                    credenciado.Usuario = usuario;

                    #endregion

                    #region Execução Obrigatoria [Independe de status do credenciado]

                    string strSessionForcarLogoff = string.Empty;

                    //Não se pode char busUsuario Autenticar antes do metodo no finally!!!
                    if (usuarioValido && credenciado.Logado)
                    {
                        GerenciarAutenticacao.Deslogar(login, true);

                        if (usuarioValido && credenciado.ForcarLogout)
                        {
                            strSessionForcarLogoff = credenciado.SessionId;

                            if (!String.Equals(credenciado.Usuario.Ip, usuarioAuditoria.Ip))
                            {
                                Validacao.Add(Mensagem.Login.SessaoDerrubada);
                            }
                        }
                    }

                    #endregion

                    #region Bloqueio e mensagem de bloqueado

                    if (credenciado.Tentativa > _config.Obter <Int32>(ConfiguracaoCredenciado.KeyNumTentativas))
                    {
                        credenciado.Situacao = (int)eCredenciadoSituacao.Bloqueado;
                        credenciado.Usuario  = new Usuario()
                        {
                            Login = login
                        };
                        _da.AlterarSituacao(credenciado, bancoDeDados);
                        Validacao.Add(Mensagem.Login.FuncionarioBloqueado);
                        return(false);
                    }

                    if (credenciado.Situacao == (int)eCredenciadoSituacao.Bloqueado)
                    {
                        Validacao.Add(Mensagem.Login.SituacaoInvalida(CredenciadoSituacoes.Single(x => x.Id == credenciado.Situacao).Nome));
                        return(false);
                    }

                    #endregion

                    #region Aguardando Chave

                    if (credenciado.Situacao == (int)eCredenciadoSituacao.AguardandoAtivacao || credenciado.Situacao == (int)eCredenciadoSituacao.AguardandoChave)
                    {
                        Validacao.Add(Mensagem.Login.AguardandoChave);
                        return(false);
                    }

                    #endregion

                    //Fazer aqui
                    //Acesso não permitido nestes horários e/ou dia! Entre em contato com o administrador do sistema

                    #region Valida senha vencida

                    // 4 -Senha Vencida
                    if (_da.VerificarSenhaVencida(usuario.Id))
                    {
                        //Mensagem gerada na interface
                        return(false);
                    }

                    #endregion

                    #region Mensagem Número de tentativas

                    if (!usuarioValido && credenciado.Situacao != (int)eCredenciadoSituacao.Bloqueado)
                    {
                        Validacao.Add(Mensagem.Login.NumTentativas(credenciado.Tentativa, _config.Obter <Int32>(ConfiguracaoCredenciado.KeyNumTentativas)));
                    }

                    #endregion

                    //Efetiva a autenticação de credenciado [Atenção para o finally]
                    if (usuarioValido)
                    {
                        credenciado.SessionId = Guid.NewGuid().ToString();
                        userSessionId         = credenciado.SessionId;                 //Parâmetro out deste metodo!!!
                        _da.Autenticar(credenciado, strSessionForcarLogoff, bancoDeDados);
                    }

                    bancoDeDados.Commit();
                }
            }
            catch
            {
                usuarioValido = false;
                throw;
            }
            finally
            {
                //Autentica Usuario, gera historico e linha de auditoria
                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
                {
                    bancoDeDados.IniciarTransacao();

                    _busUsuario.Autenticar(usuarioAuditoria, usuarioValido, (int)eExecutorTipo.Credenciado, bancoDeDados);

                    bancoDeDados.Commit();
                }
            }

            return(usuarioValido);
        }