Exemplo n.º 1
0
        private Cliente CacheClienteGetByFilters(String register, int idAplicacao)
        {
            if (!RedisCacheManager.CannotCache(RedisCacheConstants.Login.KeyLoginClienteGetByFilters))
            {
                var Key = string.Format("{0}:{1}:{2}", RedisCacheConstants.Login.KeyLoginClienteGetByFilters, register, idAplicacao);
                var ret = RedisCacheManager.GetItemObject <Cliente>(Key);
                if (ret != null)
                {
                    return(ret);
                }
                else
                {
                    var cliente = _clienteRepository.GetByFilters(new Cliente {
                        Register = register
                    },
                                                                  aplicacao: (Aplicacoes)Convert.ToInt32(idAplicacao))
                                  .FirstOrDefault();

                    RedisCacheManager.SetItemObject(Key, cliente, TimeSpan.FromMinutes(5));
                    return(cliente);
                }
            }
            else
            {
                return(_clienteRepository.GetByFilters(new Cliente {
                    Register = register
                },
                                                       aplicacao: (Aplicacoes)Convert.ToInt32(idAplicacao))
                       .FirstOrDefault());
            }
        }
Exemplo n.º 2
0
        private ValidaLoginDTO Login(string identificador, string senha, bool validarSenha, Aplicacoes aplicacao, string versaoApp)
        {
            senha = validarSenha ? Utilidades.EncryptionSHA1(senha) : senha;
            Task <PermissaoInadimplencia> tarefaInadimplencia = null;
            Task <List <Menu> >           menusPermitidos     = null;
            Task <IDictionary <Utilidades.EMenuAccessObject, bool> > tarefaPermissoesRMais = null;
            IDictionary <Utilidades.EMenuAccessObject, bool>         permissoesRMais       = new Dictionary <Utilidades.EMenuAccessObject, bool>();

            var tarefaVersaoLoja = Utilidades.ObterUltimaVersaoLojaAsync(aplicacao);

            Cliente pessoa           = new Cliente();
            var     isGolden         = false;
            var     alunoMedMedcurso = true;

            Cliente cliente = new Cliente {
                Register = identificador
            };
            var dadosBasicos = GetRegisterParaLogin(identificador);

            if (dadosBasicos != null)
            {
                cliente.Register = dadosBasicos.Register;
                menusPermitidos  = ObterPermissoesRecursosAsync(dadosBasicos.ID, versaoApp, aplicacao);
            }

            var tipoPessoa  = _clienteRepository.GetPersonType(cliente.Register);
            var isProfessor = (tipoPessoa == Pessoa.EnumTipoPessoa.Professor || tipoPessoa == Pessoa.EnumTipoPessoa.Funcionario);

            if (tipoPessoa == Pessoa.EnumTipoPessoa.Cliente)
            {
                tarefaInadimplencia = VerificaInadimplenciaAsync(cliente.Register, aplicacao);

                pessoa        = _clienteRepository.GetByFilters(cliente, 0, aplicacao).FirstOrDefault();
                pessoa.Nome   = Utilidades.GetNomeResumido(pessoa.Nome);
                pessoa.Avatar = pessoa.Avatar;
                pessoa.Estado = _alunoRepository.GetAlunoEstado(pessoa.ID);
            }
            else if (isProfessor)
            {
                var funcionario = _funcionarioRepository.GetFuncionariosRecursos(cliente.Register).FirstOrDefault();
                pessoa.ID            = funcionario.ID;
                pessoa.Nome          = Utilidades.GetNomeResumido(funcionario.Nome);
                pessoa.Senha         = funcionario.Senha;
                pessoa.RetornoStatus = Cliente.StatusRetorno.Inexistente;

                var avatarProfessor = string.Concat(
                    Constants.URLDIRETORIOAVATARPROFESSOR, pessoa.ID, ".jpg"
                    );

                pessoa.Avatar = Utilidades.VerificaImagemExiste(avatarProfessor) ?
                                avatarProfessor : Constants.LINK_STATIC_AVATAR_PADRAO;
            }
            else if (tipoPessoa == Pessoa.EnumTipoPessoa.NaoExiste)
            {
                return(ValidaLoginDTO.AlunoInexistente);
            }

            if (IsLoginSucesso(tipoPessoa, pessoa.RetornoStatus))
            {
                isGolden = _clienteRepository.UserGolden(cliente.Register, aplicacao) == 1;
            }

            if (tipoPessoa == Pessoa.EnumTipoPessoa.Cliente)
            {
                tarefaPermissoesRMais = ObterPermissoesRecursosRMaisAsync(menusPermitidos.Result);
                alunoMedMedcurso      = ObterPermissoesRecursosRUm(menusPermitidos.Result);

                var result = ValidaResultadoLoginCliente(pessoa, senha, validarSenha, isGolden, tarefaInadimplencia);

                if (result != null)
                {
                    if (StatusLoginPermiteAcesso(result.Validacao))
                    {
                        var acessoRmais             = tarefaPermissoesRMais.Result;
                        var acessoR1                = alunoMedMedcurso;
                        var acessoRmaisPorInteresse = GanhaPermissaoRMaisPorInteresse(pessoa.ID, acessoR1, acessoRmais);

                        if (acessoRmaisPorInteresse)
                        {
                            acessoRmais = LiberarPermissoes(tarefaPermissoesRMais.Result);
                        }

                        var permissao = ObterHashPermissao(
                            new KeyValuePair <string, object>("matricula", pessoa.ID),
                            new KeyValuePair <string, object>("RMais", acessoRmais),
                            new KeyValuePair <string, object>("RUm", acessoR1)
                            );

                        result.Versao                  = ObterDadosVersao(versaoApp, tarefaVersaoLoja.Result, aplicacao);
                        result.Perfil.RUm              = acessoR1;
                        result.Perfil.RMais            = PossuiPermissaoRecursoRMais(pessoa.ID, acessoR1, acessoRmais);
                        result.Perfil.ProdutoPrincipal = GetNomeProdutoPermissao(acessoRmais);
                        result.Perfil.Hash             = Criptografia.CryptAES(permissao);
                    }
                    return(result);
                }
            }

            var senhaGolden = string.Empty;

            if (isGolden)
            {
                senhaGolden = _clienteRepository.ObterSenhaGolden();
                senhaGolden = Utilidades.EncryptionSHA1(senhaGolden);
            }

            if (validarSenha && senha != pessoa.Senha && (!isGolden || senha != senhaGolden))
            {
                return(ValidaLoginDTO.SenhaInvalida);
            }

            var versao = ObterDadosVersao(versaoApp, tarefaVersaoLoja.Result, aplicacao);

            var permissaoR1 = alunoMedMedcurso;

            if (isProfessor)
            {
                permissoesRMais = LiberarPermissoesRecursosRMaisProfessor();
                permissaoR1     = true;
            }
            else
            {
                permissoesRMais = tarefaPermissoesRMais.Result;
            }

            var permiteRMaisPorInteresse = GanhaPermissaoRMaisPorInteresse(pessoa.ID, permissaoR1, permissoesRMais);

            if (permiteRMaisPorInteresse)
            {
                permissoesRMais = LiberarPermissoes(tarefaPermissoesRMais.Result);
            }

            var hash = ObterHashPermissao(
                new KeyValuePair <string, object>("matricula", pessoa.ID),
                new KeyValuePair <string, object>("RMais", permissoesRMais),
                new KeyValuePair <string, object>("RUm", permissaoR1)
                );

            return(new ValidaLoginDTO
            {
                Validacao = ValidacaoLogin.Sucesso,
                Versao = versao,
                Perfil = new PerfilDTO
                {
                    Matricula = pessoa.ID,
                    Email = pessoa.Email ?? pessoa.Email2 ?? pessoa.Email3,
                    Especialidade = pessoa.Especialidade,
                    Nome = pessoa.Nome,
                    UrlAvatar = pessoa.Avatar,
                    RUm = permissaoR1,
                    RMais = PossuiPermissaoRecursoRMais(pessoa.ID, permissaoR1, permissoesRMais),
                    ProdutoPrincipal = GetNomeProdutoPermissao(permissoesRMais),
                    Estado = pessoa.Estado,
                    Hash = Criptografia.CryptAES(hash)
                }
            });
        }