user_groups: Add function for determining group creation permissions.

Earlier in frontend there was a single function to determine whether
user can create and edit user groups.
This commit adds a separate function for determining group creation
permissions.
This commit is contained in:
Ujjawal Modi
2023-08-08 19:45:49 +05:30
committed by Tim Abbott
parent 3f24dd1049
commit d32f30cedc
6 changed files with 15 additions and 5 deletions

View File

@@ -182,6 +182,7 @@ export function build_page() {
can_create_multiuse_invite: settings_data.user_can_create_multiuse_invite(), can_create_multiuse_invite: settings_data.user_can_create_multiuse_invite(),
can_invite_users_by_email: settings_data.user_can_invite_users_by_email(), can_invite_users_by_email: settings_data.user_can_invite_users_by_email(),
realm_invite_required: realm.realm_invite_required, 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, policy_values: settings_config.common_policy_values,
realm_can_delete_any_message_group: realm.realm_can_delete_any_message_group, realm_can_delete_any_message_group: realm.realm_can_delete_any_message_group,
realm_delete_own_message_policy: realm.realm_delete_own_message_policy, realm_delete_own_message_policy: realm.realm_delete_own_message_policy,

View File

@@ -248,7 +248,7 @@ export function validate_group_settings_hash(hash: string): string {
const hash_components = hash.slice(1).split(/\//); const hash_components = hash.slice(1).split(/\//);
const section = hash_components[1]; 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) { if (section === "new" && !can_create_groups) {
return "#groups/your"; return "#groups/your";
} }

View File

@@ -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); 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 { export function user_can_add_custom_emoji(): boolean {
return user_has_permission(realm.realm_add_custom_emoji_policy); return user_has_permission(realm.realm_add_custom_emoji_policy);
} }

View File

@@ -726,7 +726,7 @@ export function setup_page(callback) {
function populate_and_fill() { function populate_and_fill() {
const template_data = { 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, max_user_group_name_length,
}; };

View File

@@ -11,7 +11,7 @@
<div class="left"> <div class="left">
<div class="list-toggler-container"> <div class="list-toggler-container">
<div id="add_new_user_group"> <div id="add_new_user_group">
{{#if can_create_or_edit_user_groups}} {{#if can_create_user_groups}}
<button class="create_user_group_button create_user_group_plus_button"> <button class="create_user_group_button create_user_group_plus_button">
<span class="create_button_plus_sign">+</span> <span class="create_button_plus_sign">+</span>
</button> </button>
@@ -36,7 +36,7 @@
<div class="all_groups_tab_empty_text"> <div class="all_groups_tab_empty_text">
<span class="settings-empty-option-text"> <span class="settings-empty-option-text">
{{t 'There are no user groups you can view in this organization.'}} {{t 'There are no user groups you can view in this organization.'}}
{{#if can_create_or_edit_user_groups}} {{#if can_create_user_groups}}
<a href="#groups/new">{{t 'Create a user group'}}</a> <a href="#groups/new">{{t 'Create a user group'}}</a>
{{/if}} {{/if}}
</span> </span>
@@ -50,7 +50,7 @@
<div id="user_group_settings_title" class="user-group-info-title">{{t 'User group settings' }}</div> <div id="user_group_settings_title" class="user-group-info-title">{{t 'User group settings' }}</div>
</div> </div>
<div class="nothing-selected"> <div class="nothing-selected">
{{#if can_create_or_edit_user_groups}} {{#if can_create_user_groups}}
<button type="button" class="create_user_group_button animated-purple-button">{{t 'Create user group' }}</button> <button type="button" class="create_user_group_button animated-purple-button">{{t 'Create user group' }}</button>
<span class="settings-empty-option-text"> <span class="settings-empty-option-text">
{{#tr}} {{#tr}}

View File

@@ -156,6 +156,11 @@ test_policy(
"realm_move_messages_between_streams_policy", "realm_move_messages_between_streams_policy",
settings_data.user_can_move_messages_between_streams, 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( test_policy(
"user_can_edit_user_groups", "user_can_edit_user_groups",
"realm_user_group_edit_policy", "realm_user_group_edit_policy",