Я использую django-allauth для обеспечения аутентификации Google для моего приложения для управления собственностью. Вот рабочий процесс регистрации, который я ищу:
- Новый менеджер переходит на страницу регистрации с кнопкой «Зарегистрироваться в Google».
- Они нажимают кнопку и входят в Google.
- При обратном звонке из Google им предоставляется форма для дополнительной информации.
- Когда они отправляют эту форму, создается их учетная запись пользователя и профиль менеджера, и они перенаправляются на домашнюю страницу своей компании.
Я попытался обработать это «перенаправление на домашнюю страницу компании» через адаптеры. Проблема, с которой я столкнулся, заключается в том, что функция get_login_redirect_url выполняется после первоначального входа в Google, но до формы регистрации, в которой я собираю их график работы, поэтому я получаю DoesNotExist при перенаправлении адаптера, потому что он был вызван перед профилем менеджера был создан.
Как правильно выполнять эти перенаправления?
settings.py
ACCOUNT_SIGNUP_FORM_CLASS = 'managers.signup.ManagerProfileSignupForm'
SOCIALACCOUNT_AUTO_SIGNUP = False
SOCIALACCOUNT_ADAPTER = 'managers.adapter.ManagerSocialAccountAdapter'
ACCOUNT_ADAPTER = 'managers.adapter.ManagerAccountAdapter'
adapters.py
class ManagerSocialAccountAdapter(DefaultSocialAccountAdapter):
def get_connect_redirect_url(self, request, socialaccount):
return reverse('company_details', args=(request.user.managerprofile.company.pk,))
class ManagerAccountAdapter(DefaultAccountAdapter):
def get_login_redirect_url(self, request):
return reverse('company_details', args=(request.user.managerprofile.company.pk,))