realm: Create RealmAuditLog entry while adding a new allowed domain.

This commit also adds 'acting_user' argument for do_add_realm_domain
function.

Fixes a part of #21268.
This commit is contained in:
Sahil Batra
2022-03-07 19:19:16 +05:30
committed by Tim Abbott
parent ee11a68f7a
commit 5ef8da40a9
6 changed files with 54 additions and 4 deletions

View File

@@ -252,6 +252,7 @@ from zerver.models import (
get_huddle_user_ids,
get_old_unclaimed_attachments,
get_realm,
get_realm_domains,
get_realm_playgrounds,
get_stream,
get_stream_by_id_in_realm,
@@ -8086,10 +8087,26 @@ def do_update_linkifier(realm: Realm, id: int, pattern: str, url_format_string:
notify_linkifiers(realm)
def do_add_realm_domain(realm: Realm, domain: str, allow_subdomains: bool) -> (RealmDomain):
def do_add_realm_domain(
realm: Realm, domain: str, allow_subdomains: bool, *, acting_user: Optional[UserProfile]
) -> (RealmDomain):
realm_domain = RealmDomain.objects.create(
realm=realm, domain=domain, allow_subdomains=allow_subdomains
)
RealmAuditLog.objects.create(
realm=realm,
acting_user=acting_user,
event_type=RealmAuditLog.REALM_DOMAIN_ADDED,
event_time=timezone_now(),
extra_data=orjson.dumps(
{
"realm_domains": get_realm_domains(realm),
"added_domain": {"domain": domain, "allow_subdomains": allow_subdomains},
}
).decode(),
)
event = dict(
type="realm_domains",
op="add",
@@ -8098,6 +8115,7 @@ def do_add_realm_domain(realm: Realm, domain: str, allow_subdomains: bool) -> (R
),
)
send_event(realm, event, active_user_ids(realm.id))
return realm_domain

View File

@@ -4062,6 +4062,7 @@ class AbstractRealmAuditLog(models.Model):
REALM_CREATED = 215
REALM_DEFAULT_USER_SETTINGS_CHANGED = 216
REALM_ORG_TYPE_CHANGED = 217
REALM_DOMAIN_ADDED = 218
SUBSCRIPTION_CREATED = 301
SUBSCRIPTION_ACTIVATED = 302

View File

@@ -10,6 +10,7 @@ from zerver.lib.actions import (
bulk_add_subscriptions,
bulk_remove_subscriptions,
do_activate_mirror_dummy_user,
do_add_realm_domain,
do_change_avatar_fields,
do_change_bot_owner,
do_change_default_all_public_streams,
@@ -47,6 +48,7 @@ from zerver.models import (
Subscription,
UserProfile,
get_realm,
get_realm_domains,
get_stream,
)
@@ -658,3 +660,28 @@ class TestRealmAuditLog(ZulipTestCase):
1,
)
self.assertEqual(getattr(user, setting), value)
def test_realm_domain_entries(self) -> None:
user = self.example_user("iago")
initial_domains = get_realm_domains(user.realm)
now = timezone_now()
do_add_realm_domain(user.realm, "zulip.org", False, acting_user=user)
added_domain: Dict[str, Union[str, bool]] = {
"domain": "zulip.org",
"allow_subdomains": False,
}
expected_extra_data = {
"realm_domains": initial_domains + [added_domain],
"added_domain": added_domain,
}
self.assertEqual(
RealmAuditLog.objects.filter(
realm=user.realm,
event_type=RealmAuditLog.REALM_DOMAIN_ADDED,
event_time__gte=now,
acting_user=user,
extra_data=orjson.dumps(expected_extra_data).decode(),
).count(),
1,
)

View File

@@ -1686,7 +1686,9 @@ class NormalActionsTest(BaseAction):
def test_realm_domain_events(self) -> None:
events = self.verify_action(
lambda: do_add_realm_domain(self.user_profile.realm, "zulip.org", False)
lambda: do_add_realm_domain(
self.user_profile.realm, "zulip.org", False, acting_user=None
)
)
check_realm_domains_add("events[0]", events[0])

View File

@@ -1042,7 +1042,7 @@ class MessagePOSTTest(ZulipTestCase):
zephyr_realm = get_realm("zephyr")
self.make_stream("Verona", zephyr_realm)
do_add_realm_domain(zephyr_realm, "zulip.com", False)
do_add_realm_domain(zephyr_realm, "zulip.com", False, acting_user=None)
result = self.api_post(
user,
"/api/v1/messages",

View File

@@ -34,7 +34,9 @@ def create_realm_domain(
raise JsonableError(
_("The domain {domain} is already a part of your organization.").format(domain=domain)
)
realm_domain = do_add_realm_domain(user_profile.realm, domain, allow_subdomains)
realm_domain = do_add_realm_domain(
user_profile.realm, domain, allow_subdomains, acting_user=user_profile
)
return json_success(request, data={"new_domain": [realm_domain.id, realm_domain.domain]})