diff --git a/zerver/views/auth.py b/zerver/views/auth.py index 647a42029b..5c6a16f716 100644 --- a/zerver/views/auth.py +++ b/zerver/views/auth.py @@ -391,10 +391,12 @@ def log_into_subdomain(request): email_address = data['email'] full_name = data['name'] + is_signup = data['is_signup'] user_profile, return_data = authenticate_remote_user(request, email_address) invalid_subdomain = bool(return_data.get('invalid_subdomain')) return login_or_register_remote_user(request, email_address, user_profile, - full_name, invalid_subdomain) + full_name, invalid_subdomain=invalid_subdomain, + is_signup=is_signup) def get_dev_users(extra_users_count=10): # type: (int) -> List[UserProfile] diff --git a/zproject/backends.py b/zproject/backends.py index 89f4d11aea..ac52a7f2ee 100644 --- a/zproject/backends.py +++ b/zproject/backends.py @@ -220,19 +220,21 @@ class SocialAuthMixin(ZulipAuthMixin): request = strategy.request email_address = self.get_email_address(*args, **kwargs) full_name = self.get_full_name(*args, **kwargs) + is_signup = strategy.session_get('is_signup') == '1' subdomain = strategy.session_get('subdomain') - if not subdomain: return login_or_register_remote_user(request, email_address, user_profile, full_name, - bool(invalid_subdomain)) + invalid_subdomain=bool(invalid_subdomain), + is_signup=is_signup) try: realm = Realm.objects.get(string_id=subdomain) except Realm.DoesNotExist: return redirect_to_subdomain_login_url() - return redirect_and_log_into_subdomain(realm, full_name, email_address) + return redirect_and_log_into_subdomain(realm, full_name, email_address, + is_signup=is_signup) def auth_complete(self, *args, **kwargs): # type: (*Any, **Any) -> Optional[HttpResponse] diff --git a/zproject/settings.py b/zproject/settings.py index 1b9911a63e..034d570852 100644 --- a/zproject/settings.py +++ b/zproject/settings.py @@ -187,7 +187,7 @@ DEFAULT_SETTINGS = {'TWITTER_CONSUMER_KEY': '', 'SOCIAL_AUTH_GITHUB_KEY': None, 'SOCIAL_AUTH_GITHUB_ORG_NAME': None, 'SOCIAL_AUTH_GITHUB_TEAM_ID': None, - 'SOCIAL_AUTH_FIELDS_STORED_IN_SESSION': ['subdomain'], + 'SOCIAL_AUTH_FIELDS_STORED_IN_SESSION': ['subdomain', 'is_signup'], 'DBX_APNS_CERT_FILE': None, 'DBX_APNS_KEY_FILE': None, 'PERSONAL_ZMIRROR_SERVER': None,