1
resposta

Como fazer link de usuários criados localmente com contas sociais?

Pessoal,

Como posso fazer, de forma segura, o link de usuários criados localmente (pela page admin ou formulários do app) com contas sociais, por e-mail por exemplo?

Att.

1 resposta

Olá Thiago, tudo bem?

Para vincular usuários criados localmente com contas sociais no Django, você pode usar a biblioteca django-allauth, que facilita a integração de autenticação social. Aqui está uma abordagem geral de como você pode fazer isso:

  1. Instalação do django-allauth: primeiro, certifique-se de ter o django-allauth instalado no seu projeto. Você pode instalá-lo usando o pip:

    pip install django-allauth
    
  2. Configuração do django-allauth: adicione allauth, allauth.account, e allauth.socialaccount ao seu INSTALLED_APPS no arquivo settings.py. Além disso, configure os provedores sociais que você deseja usar, como Google, Facebook, etc.

  3. Sincronização de contas: quando um usuário tenta fazer login usando uma conta social, você pode procurar um usuário existente com o mesmo e-mail e vinculá-los. O django-allauth possui hooks que permitem personalizar esse comportamento. Você pode usar o sinal social_account_added para executar código assim que uma conta social for adicionada.

    from allauth.socialaccount.signals import social_account_added
    from django.dispatch import receiver
    from django.contrib.auth.models import User
    
    @receiver(social_account_added)
    def link_to_local_user(request, sociallogin, **kwargs):
        email = sociallogin.account.extra_data.get('email')
        try:
            user = User.objects.get(email=email)
            sociallogin.connect(request, user)
        except User.DoesNotExist:
            # Se não houver usuário local, você pode decidir criar um novo ou lidar de outra forma
            pass
    
  4. Verificação de segurança: certifique-se de que o e-mail seja verificado antes de vincular as contas, para evitar que alguém se passe por outro usuário.

  5. Testes e ajustes: teste a funcionalidade completamente para garantir que tudo funcione conforme o esperado e ajuste conforme necessário.

Essa abordagem deve ajudar a vincular contas sociais a usuários locais de forma segura, usando o e-mail como identificador.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.