[Django]-Django-allauth adapter redirects

0👍

Set the LOGIN_REDIRECT_URL on the settings.py of your application:

I have this value, to redirect to the home page:

LOGIN_REDIRECT_URL = '/'

0👍

you need to define a decorator which consists of a function which runs before the account is created. Here take a look

#imports necessary for decorator call
from allauth.exceptions import ImmediateHttpResponse
from allauth.socialaccount.signals import pre_social_login
from allauth.account.utils import perform_login
from django.dispatch import receiver
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
from allauth.socialaccount.models import SocialLogin

# defining class to run through authentication
class SocialAccountAdapter(DefaultSocialAccountAdapter):
def pre_social_login(self, request, sociallogin):
    pass

# reciever defining function to hold the account before making it registered
@receiver(pre_social_login)
def link_to_local_user(sender, request, sociallogin, **kwargs):
    socialemail = sociallogin.user.email
    socialuname = socialemail.split('@')[0]
    sociallogin.user.username = socialuname+str(sociallogin.user.pk)

    if User.objects.filter(email=sociallogin.user.email).exists():
        user = User.objects.get(email=sociallogin.user.email)
        if user:
            perform_login(request, user, email_verification='optional')
            raise ImmediateHttpResponse(redirect('homePage'))
    else:
        SocialLogin.save(sociallogin, request, connect=False)
        user = User.objects.get(email=sociallogin.user.email)
        perform_login(request, user, email_verification='optional')
        raise ImmediateHttpResponse(redirect('homePage'))

This is assuming you have created a signal over User model instance creation which directly creates a profile model instance also mapping the user. If not, below the model for ManagerProfile, use this:

def create_profile(sender, instance, created, **kwargs):
    if created:
        <ManagerProfileModel>.objects.create(userID=instance)

 post_save.connect(create_profile, sender=<UserModelWhereMainAccountIsCreated>)

Leave a comment