diff --git a/zerver/tests/test_auth_backends.py b/zerver/tests/test_auth_backends.py index 65de88d026..204c1bae54 100644 --- a/zerver/tests/test_auth_backends.py +++ b/zerver/tests/test_auth_backends.py @@ -282,7 +282,10 @@ class AuthBackendTest(ZulipTestCase): def test_devauth_backend(self): # type: () -> None self.verify_backend(DevAuthBackend(), - good_kwargs=dict(dev_auth_username=self.get_username())) + good_kwargs=dict(dev_auth_username=self.get_username(), + realm=get_realm("zulip")), + bad_kwargs=dict(dev_auth_username=self.get_username(), + realm=get_realm("invalid"))) @override_settings(AUTHENTICATION_BACKENDS=('zproject.backends.ZulipRemoteUserBackend',)) def test_remote_user_backend(self): diff --git a/zerver/views/auth.py b/zerver/views/auth.py index d525b836d9..64b983c5f8 100644 --- a/zerver/views/auth.py +++ b/zerver/views/auth.py @@ -586,7 +586,7 @@ def dev_direct_login(request, **kwargs): email = request.POST['direct_email'] subdomain = get_subdomain(request) realm = get_realm(subdomain) - user_profile = authenticate(dev_auth_username=email, realm_subdomain=realm.subdomain) + user_profile = authenticate(dev_auth_username=email, realm=realm) if user_profile is None: raise Exception("User cannot login") do_login(request, user_profile) @@ -615,7 +615,7 @@ def api_dev_fetch_api_key(request, username=REQ()): return_data = {} # type: Dict[str, bool] user_profile = authenticate(dev_auth_username=username, - realm_subdomain=realm.subdomain, + realm=realm, return_data=return_data) if return_data.get("inactive_realm"): return json_error(_("Your realm has been deactivated."), diff --git a/zerver/views/email_log.py b/zerver/views/email_log.py index 7e0db38ceb..1b015fbb78 100755 --- a/zerver/views/email_log.py +++ b/zerver/views/email_log.py @@ -67,7 +67,7 @@ def generate_all_emails(request): assert result.status_code == 302 # New login email - logged_in = client.login(dev_auth_username=registered_email) + logged_in = client.login(dev_auth_username=registered_email, realm=realm) assert logged_in # New user invite and reminder emails diff --git a/zproject/backends.py b/zproject/backends.py index 467505c440..93ecf22f40 100644 --- a/zproject/backends.py +++ b/zproject/backends.py @@ -533,14 +533,17 @@ class ZulipLDAPUserPopulator(ZulipLDAPAuthBackendBase): class DevAuthBackend(ZulipAuthMixin): # Allow logging in as any user without a password. # This is used for convenience when developing Zulip. - def authenticate(self, dev_auth_username: Optional[str]=None, realm_subdomain: Optional[str]=None, + def authenticate(self, dev_auth_username: Optional[str]=None, realm: Optional[Realm]=None, return_data: Optional[Dict[str, Any]]=None) -> Optional[UserProfile]: assert dev_auth_username is not None + if realm is None: + return None user_profile = common_get_active_user_by_email(dev_auth_username, return_data=return_data) if user_profile is None: return None - if not dev_auth_enabled(user_profile.realm): + if not dev_auth_enabled(realm): return None + assert realm == user_profile.realm return user_profile class GitHubAuthBackend(SocialAuthMixin, GithubOAuth2):