diff --git a/web/src/admin.js b/web/src/admin.js index 17ccd514e2..b2385120ae 100644 --- a/web/src/admin.js +++ b/web/src/admin.js @@ -182,6 +182,7 @@ export function build_page() { can_create_multiuse_invite: settings_data.user_can_create_multiuse_invite(), can_invite_users_by_email: settings_data.user_can_invite_users_by_email(), realm_invite_required: realm.realm_invite_required, + can_create_user_groups: settings_data.user_can_create_user_groups(), policy_values: settings_config.common_policy_values, realm_can_delete_any_message_group: realm.realm_can_delete_any_message_group, realm_delete_own_message_policy: realm.realm_delete_own_message_policy, diff --git a/web/src/hash_util.ts b/web/src/hash_util.ts index 74ab27a878..b3a67d3a81 100644 --- a/web/src/hash_util.ts +++ b/web/src/hash_util.ts @@ -248,7 +248,7 @@ export function validate_group_settings_hash(hash: string): string { const hash_components = hash.slice(1).split(/\//); const section = hash_components[1]; - const can_create_groups = settings_data.user_can_edit_user_groups(); + const can_create_groups = settings_data.user_can_create_user_groups(); if (section === "new" && !can_create_groups) { return "#groups/your"; } diff --git a/web/src/settings_data.ts b/web/src/settings_data.ts index f95aeb724f..094526dc95 100644 --- a/web/src/settings_data.ts +++ b/web/src/settings_data.ts @@ -185,6 +185,10 @@ export function can_edit_user_group(group_id: number): boolean { return user_groups.is_direct_member_of(current_user.user_id, group_id); } +export function user_can_create_user_groups(): boolean { + return user_has_permission(realm.realm_user_group_edit_policy); +} + export function user_can_add_custom_emoji(): boolean { return user_has_permission(realm.realm_add_custom_emoji_policy); } diff --git a/web/src/user_group_edit.js b/web/src/user_group_edit.js index 3f65ded63f..7640078a31 100644 --- a/web/src/user_group_edit.js +++ b/web/src/user_group_edit.js @@ -726,7 +726,7 @@ export function setup_page(callback) { function populate_and_fill() { const template_data = { - can_create_or_edit_user_groups: settings_data.user_can_edit_user_groups(), + can_create_user_groups: settings_data.user_can_create_user_groups(), max_user_group_name_length, }; diff --git a/web/templates/user_group_settings/user_group_settings_overlay.hbs b/web/templates/user_group_settings/user_group_settings_overlay.hbs index 7f40cbf68f..bcadd78e5b 100644 --- a/web/templates/user_group_settings/user_group_settings_overlay.hbs +++ b/web/templates/user_group_settings/user_group_settings_overlay.hbs @@ -11,7 +11,7 @@
- {{#if can_create_or_edit_user_groups}} + {{#if can_create_user_groups}} @@ -36,7 +36,7 @@
{{t 'There are no user groups you can view in this organization.'}} - {{#if can_create_or_edit_user_groups}} + {{#if can_create_user_groups}} {{t 'Create a user group'}} {{/if}} @@ -50,7 +50,7 @@
{{t 'User group settings' }}
- {{#if can_create_or_edit_user_groups}} + {{#if can_create_user_groups}} {{#tr}} diff --git a/web/tests/settings_data.test.js b/web/tests/settings_data.test.js index bdfc25a18f..56f19ae143 100644 --- a/web/tests/settings_data.test.js +++ b/web/tests/settings_data.test.js @@ -156,6 +156,11 @@ test_policy( "realm_move_messages_between_streams_policy", settings_data.user_can_move_messages_between_streams, ); +test_policy( + "user_can_create_user_groups", + "realm_user_group_edit_policy", + settings_data.user_can_create_user_groups, +); test_policy( "user_can_edit_user_groups", "realm_user_group_edit_policy",