diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index 06cc4a4fe7..e3d5835e35 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -597,8 +597,13 @@ def recipient_for_emails(emails, not_forged_mirror_message, # Prevent cross realm private messages unless it is between only two realms # and one of users is a zuliper - if len(realm_domains) == 2 and not (normalized_emails & settings.OG_ZULIPER_EMAILS): - raise ValidationError("You can't send private messages outside of your organization.") + if len(realm_domains) == 2: + # I'm assuming that cross-realm PMs with the "admin realm" are rare, and therefore can be slower + admin_realm = Realm.objects.get(domain=settings.ADMIN_DOMAIN) + admin_realm_admin_emails = [u.email for u in admin_realm.get_admin_users()] + # We allow settings.CROSS_REALM_BOT_EMAILS for the hardcoded emails for the feedback and notification bots + if not (normalized_emails & admin_realm_admin_emails or normalized_emails & settings.CROSS_REALM_BOT_EMAILS): + raise ValidationError("You can't send private messages outside of your organization.") if len(realm_domains) > 2: raise ValidationError("You can't send private messages outside of your organization.") diff --git a/zerver/test_messages.py b/zerver/test_messages.py index 0fecddce1d..e5a45928f9 100644 --- a/zerver/test_messages.py +++ b/zerver/test_messages.py @@ -157,7 +157,7 @@ class IncludeHistoryTest(AuthedTestCase): class TestCrossRealmPMs(AuthedTestCase): def setUp(self): - settings.OG_ZULIPER_EMAILS.add('test-og-user@zulip.com') + settings.CROSS_REALM_BOT_EMAILS.add('test-og-bot@zulip.com') def create_user(self, email): username, domain = email.split('@') @@ -225,7 +225,7 @@ class TestCrossRealmPMs(AuthedTestCase): deployment = Deployment.objects.filter()[0] deployment.realms.add(r1) - user1_email = 'test-og-user@zulip.com' + user1_email = 'test-og-bot@zulip.com' user1 = self.create_user(user1_email) user2_email = 'user2@1.example.com' user2 = self.create_user(user2_email) @@ -244,7 +244,7 @@ class TestCrossRealmPMs(AuthedTestCase): user1_email = 'user1@1.example.com' user1 = self.create_user(user1_email) - user2_email = 'test-og-user@zulip.com' + user2_email = 'test-og-bot@zulip.com' user2 = self.create_user(user2_email) self.send_message(user1_email, user2_email, Recipient.PERSONAL) @@ -265,7 +265,7 @@ class TestCrossRealmPMs(AuthedTestCase): self.create_user(user1_email) user2_email = 'user2@2.example.com' self.create_user(user2_email) - user3_email = 'test-og-user@zulip.com' + user3_email = 'test-og-bot@zulip.com' self.create_user(user3_email) with self.assertRaisesRegexp(JsonableError, diff --git a/zproject/settings.py b/zproject/settings.py index 14862d08d6..a56eab4a4c 100644 --- a/zproject/settings.py +++ b/zproject/settings.py @@ -932,5 +932,4 @@ USING_EMBEDLY = False # This is a debugging option only PROFILE_ALL_REQUESTS = False -OG_ZULIPER_EMAILS = set(('feedback@zulip.com', 'notification-bot@zulip.com', -)) +CROSS_REALM_BOT_EMAILS = set(('feedback@zulip.com', 'notification-bot@zulip.com'))