public async Task <IEnumerable <OrganizacaoUsuarioMySql> > ListarOrganizacoesUsuarioEmail(string email)
        {
            // buscar usuário
            string sql = @"select * from nqs.usuarios where Login = @Login;";
            Dictionary <string, object> keyValuePairs = new Dictionary <string, object> {
                { "@Login", email }
            };
            UsuarioMySql usuarioMySql = base.Obter <UsuarioMySql>(sql, keyValuePairs);

            if (usuarioMySql == null)
            {
                return(null);
            }

            // buscar organizações
            sql           = @"select * from nqs.organizacaousuarios where IdUsuario = @IdUsuario;";
            keyValuePairs = new Dictionary <string, object> {
                { "@IdUsuario", usuarioMySql.Id }
            };
            IEnumerable <OrganizacaoUsuarioMySql> organizacaoUsuarioMySqls = await base.ListarPorAsync <OrganizacaoUsuarioMySql>(sql, keyValuePairs).ConfigureAwait(true);

            foreach (var item in organizacaoUsuarioMySqls)
            {
                item.Usuario = usuarioMySql;
            }

            return(organizacaoUsuarioMySqls);
        }
Esempio n. 2
0
        private UsuarioViewModel VerificaLoginSenha(LoginMySql objeto)
        {
            try
            {
                UsuarioViewModel retorno = null;

                // efetuar login
                UsuarioMySql busca = _usuarioMySqlRepository.ObterUsuarioLogin(new UsuarioMySql
                {
                    Login = objeto.Usuario,
                    Senha = objeto.Senha
                });

                // objeto retorno
                retorno = new UsuarioViewModel
                {
                    Ativo              = busca.Ativo,
                    ContaGoogle        = busca.ContaGoogle,
                    DataCriacao        = busca.DataCriacao,
                    DataEdicao         = busca.DataEdicao,
                    Id                 = busca.Id,
                    Login              = busca.Login,
                    ResponsavelCriacao = busca.ResponsavelCriacao,
                    ResponsavelEdicao  = busca.ResponsavelEdicao,
                    Senha              = busca.Senha,
                };

                if (busca == null)
                {
                    return(retorno);
                }

                // comparar senha
                string hashGerado = CriptoHashSha256.GetSha256Hash(objeto.Senha);
                if (hashGerado == busca.Senha)
                {
                    return(retorno);
                }

                return(retorno);
            }
            catch (Exception e)
            {
                return(null);
            }
        }
Esempio n. 3
0
        public async Task <UsuarioLogadoMySqlViewModel> AutenticaComGoogle(UsuarioSocialMySqlViewModel login)
        {
            UsuarioLogadoMySqlViewModel usuarioLogado = null;

            if (login != null)
            {
                UsuarioMySql usuario = VerificaLoginGoogle(login);

                if (usuario == null)
                {
                    return(usuarioLogado);
                }

                if (!usuario.Ativo)
                {
                    return(usuarioLogado);
                }

                if (!usuario.ContaGoogle)
                {
                    return(usuarioLogado);
                }

                try
                {
                    IEnumerable <OrganizacaoUsuarioMySql> organizacoes = await _organizacaoMySqlRepository.ListarOrganizacoesUsuarioEmail(usuario.Login);

                    OrganizacaoUsuarioMySql organizacaoUsuario = null;

                    if (organizacoes.Any(x => x.UltimaAcessada))
                    {
                        organizacaoUsuario = organizacoes.FirstOrDefault(x => x.UsuarioPlataforma && x.UltimaAcessada);
                    }
                    else
                    {
                        organizacaoUsuario = organizacoes.FirstOrDefault(x => x.UsuarioPlataforma);
                    }

                    var pessoa = await _pessoaMySqlRepository.BuscarPorEmail(usuario.Login);

                    if (!usuario.Ativo)
                    {
                        return(usuarioLogado);
                    }

                    if (!pessoa.GoobeeAdmin)
                    {
                        if (organizacaoUsuario == null || !string.IsNullOrWhiteSpace(organizacaoUsuario.IdUsuario))
                        {
                            return(usuarioLogado);
                        }

                        if (organizacaoUsuario.Pessoa == null || organizacaoUsuario.Pessoa.Status == false)
                        {
                            return(usuarioLogado);
                        }

                        List <string> idsTimes = new List <string>();
                        foreach (var timePessoa in organizacaoUsuario.Pessoa.TimePessoas)
                        {
                            if (timePessoa.IdOrganizacao == organizacaoUsuario.IdOrganizacao)
                            {
                                idsTimes.Add(timePessoa.IdTime);
                            }
                        }

                        usuarioLogado = new UsuarioLogadoMySqlViewModel()
                        {
                            DataCriacao   = organizacaoUsuario.Pessoa.DataCriacao,
                            Email         = organizacaoUsuario.Pessoa.Email,
                            Nome          = organizacaoUsuario.Pessoa.Nome,
                            Foto          = organizacaoUsuario.Pessoa.Foto,
                            Id            = organizacaoUsuario.IdUsuario,
                            IdPessoa      = organizacaoUsuario.IdPessoa,
                            IdOrganizacao = organizacaoUsuario.IdOrganizacao,
                            RoleEnum      = organizacaoUsuario.OrganizacaoUsuarioRole.Role,
                            IdsTimes      = idsTimes
                        };
                    }
                    else
                    {
                        string idOrganizacao;

                        if (!string.IsNullOrWhiteSpace(pessoa.IdUltimaOrgAcessada))
                        {
                            idOrganizacao = pessoa.IdUltimaOrgAcessada;
                        }
                        else
                        {
                            idOrganizacao = _organizacaoMySqlRepository.Obter()?.Id;
                        }

                        usuarioLogado = new UsuarioLogadoMySqlViewModel()
                        {
                            DataCriacao   = DateTime.Now,
                            Email         = pessoa.Email,
                            Nome          = pessoa.Nome,
                            Foto          = pessoa.Foto,
                            Id            = usuario.Id,
                            IdPessoa      = pessoa.Id,
                            IdOrganizacao = idOrganizacao,
                            RoleEnum      = OrganizacaoUsuarioRoleEnum.GoobeeAdmin,
                            IdsTimes      = new List <string>()
                        };
                    }

                    return(usuarioLogado);
                }
                catch (Exception error)
                {
                    return(usuarioLogado);
                }
            }

            if (usuarioLogado != null)
            {
                usuarioLogado.Token = await CriaToken(usuarioLogado, login.IdToken);

                if (usuarioLogado.Token == null)
                {
                    usuarioLogado = null;
                }
            }

            return(usuarioLogado);
        }