public async Task <IActionResult> LoginComGoogle([FromBody] UsuarioSocialMySqlViewModel usuario)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            UsuarioLogadoMySqlViewModel usuarioLogado = await _loginMySqlService.AutenticaComGoogle(usuario);

            if (usuarioLogado != null)
            {
                return(Ok(usuarioLogado));
            }

            return(Unauthorized());
        }
示例#2
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);
        }
示例#3
0
 private UsuarioMySql VerificaLoginGoogle(UsuarioSocialMySqlViewModel login)
 {
     return(_usuarioMySqlRepository.ObterUsuarioLogin(new UsuarioMySql {
         Login = login.Email, ContaGoogle = true
     }));
 }