mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
user_groups: Disable actions for deactivated groups.
Joining/leaving the group as well as adding or removing others is disabled.
This commit is contained in:
committed by
Tim Abbott
parent
d12feb1872
commit
b5e123a613
@@ -176,7 +176,10 @@ export function can_manage_user_group(group_id: number): boolean {
|
||||
|
||||
export function can_add_members_to_user_group(group_id: number): boolean {
|
||||
const group = user_groups.get_user_group_from_id(group_id);
|
||||
|
||||
// We cannot add members if the group is deactivated.
|
||||
if (group.deactivated) {
|
||||
return false;
|
||||
}
|
||||
if (
|
||||
user_has_permission_for_group_setting(
|
||||
group.can_add_members_group,
|
||||
@@ -192,7 +195,10 @@ export function can_add_members_to_user_group(group_id: number): boolean {
|
||||
|
||||
export function can_remove_members_from_user_group(group_id: number): boolean {
|
||||
const group = user_groups.get_user_group_from_id(group_id);
|
||||
|
||||
// We cannot remove members if the group is deactivated.
|
||||
if (group.deactivated) {
|
||||
return false;
|
||||
}
|
||||
if (
|
||||
user_has_permission_for_group_setting(
|
||||
group.can_remove_members_group,
|
||||
@@ -208,7 +214,10 @@ export function can_remove_members_from_user_group(group_id: number): boolean {
|
||||
|
||||
export function can_join_user_group(group_id: number): boolean {
|
||||
const group = user_groups.get_user_group_from_id(group_id);
|
||||
|
||||
// One cannot join a deactivated group.
|
||||
if (group.deactivated) {
|
||||
return false;
|
||||
}
|
||||
if (user_has_permission_for_group_setting(group.can_join_group, "can_join_group", "group")) {
|
||||
return true;
|
||||
}
|
||||
@@ -217,8 +226,11 @@ export function can_join_user_group(group_id: number): boolean {
|
||||
}
|
||||
|
||||
export function can_leave_user_group(group_id: number): boolean {
|
||||
// One cannot leave a deactivated group.
|
||||
const group = user_groups.get_user_group_from_id(group_id);
|
||||
|
||||
if (group.deactivated) {
|
||||
return false;
|
||||
}
|
||||
if (user_has_permission_for_group_setting(group.can_leave_group, "can_leave_group", "group")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -141,9 +141,12 @@ function update_add_members_elements(group: UserGroup): void {
|
||||
$button_element.prop("disabled", true);
|
||||
$add_members_container.addClass("add_members_disabled");
|
||||
|
||||
const disable_hint = group.deactivated
|
||||
? $t({defaultMessage: "Can't add members to a deactivated group"})
|
||||
: $t({defaultMessage: "You are not allowed to add members to this group"});
|
||||
settings_components.initialize_disable_button_hint_popover(
|
||||
$add_members_container,
|
||||
$t({defaultMessage: "You are not allowed to add members to this group."}),
|
||||
disable_hint,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -260,8 +263,13 @@ function initialize_tooltip_for_membership_button(group_id: number): void {
|
||||
".join_leave_button_wrapper",
|
||||
);
|
||||
const is_member = user_groups.is_user_in_group(group_id, people.my_current_user_id());
|
||||
const is_deactivated = user_groups.get_user_group_from_id(group_id).deactivated;
|
||||
let tooltip_message;
|
||||
if (is_member) {
|
||||
if (is_deactivated && is_member) {
|
||||
tooltip_message = $t({defaultMessage: "You cannot leave a deactivated user group."});
|
||||
} else if (is_deactivated) {
|
||||
tooltip_message = $t({defaultMessage: "You cannot join a deactivated user group."});
|
||||
} else if (is_member) {
|
||||
tooltip_message = $t({defaultMessage: "You do not have permission to leave this group."});
|
||||
} else {
|
||||
tooltip_message = $t({defaultMessage: "You do not have permission to join this group."});
|
||||
|
||||
@@ -18,11 +18,19 @@
|
||||
</template>
|
||||
|
||||
<template id="cannot-leave-{{name}}-group-tooltip-template">
|
||||
<span>
|
||||
{{#tr}}
|
||||
You do not have permission to leave this group.
|
||||
{{/tr}}
|
||||
</span>
|
||||
{{#if deactivated}}
|
||||
<span>
|
||||
{{#tr}}
|
||||
You cannot leave a deactivated user group.
|
||||
{{/tr}}
|
||||
</span>
|
||||
{{else}}
|
||||
<span>
|
||||
{{#tr}}
|
||||
You do not have permission to leave this group.
|
||||
{{/tr}}
|
||||
</span>
|
||||
{{/if}}
|
||||
</template>
|
||||
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="100%" height="100%" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
@@ -41,11 +49,19 @@
|
||||
</template>
|
||||
|
||||
<template id="cannot-join-{{name}}-group-tooltip-template">
|
||||
<span>
|
||||
{{#tr}}
|
||||
You do not have permission to join this group.
|
||||
{{/tr}}
|
||||
</span>
|
||||
{{#if deactivated}}
|
||||
<span>
|
||||
{{#tr}}
|
||||
You cannot join a deactivated user group.
|
||||
{{/tr}}
|
||||
</span>
|
||||
{{else}}
|
||||
<span>
|
||||
{{#tr}}
|
||||
You do not have permission to join this group.
|
||||
{{/tr}}
|
||||
</span>
|
||||
{{/if}}
|
||||
</template>
|
||||
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="100%" height="100%" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
{{/if}}
|
||||
</button>
|
||||
</div>
|
||||
{{#unless group.deactivated}}
|
||||
<button class="button small rounded button-danger deactivate deactivate-group-button tippy-zulip-delayed-tooltip" data-tippy-content="{{t 'Deactivate group'}}" type="button"> <i class="zulip-icon zulip-icon-user-group-x" aria-hidden="true"></i></button>
|
||||
{{/unless}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="user_group_settings_wrapper" data-group-id="{{group.id}}">
|
||||
|
||||
@@ -38,6 +38,7 @@ const admins = {
|
||||
can_manage_group: 4,
|
||||
can_mention_group: 1,
|
||||
can_remove_members_group: 4,
|
||||
deactivated: false,
|
||||
};
|
||||
const moderators = {
|
||||
description: "Moderators",
|
||||
@@ -52,6 +53,7 @@ const moderators = {
|
||||
can_manage_group: 4,
|
||||
can_mention_group: 1,
|
||||
can_remove_members_group: 4,
|
||||
deactivated: false,
|
||||
};
|
||||
const members = {
|
||||
description: "Members",
|
||||
@@ -66,6 +68,7 @@ const members = {
|
||||
can_manage_group: 4,
|
||||
can_mention_group: 4,
|
||||
can_remove_members_group: 4,
|
||||
deactivated: false,
|
||||
};
|
||||
const nobody = {
|
||||
description: "Nobody",
|
||||
@@ -80,6 +83,7 @@ const nobody = {
|
||||
can_manage_group: 4,
|
||||
can_mention_group: 2,
|
||||
can_remove_members_group: 4,
|
||||
deactivated: false,
|
||||
};
|
||||
const students = {
|
||||
description: "Students group",
|
||||
@@ -98,6 +102,19 @@ const students = {
|
||||
can_mention_group: 3,
|
||||
can_remove_members_group: 1,
|
||||
creator_id: 4,
|
||||
deactivated: false,
|
||||
};
|
||||
const deactivated_group = {
|
||||
name: "Deactivated test group",
|
||||
id: 3,
|
||||
members: new Set([1, 2, 3]),
|
||||
is_system_group: false,
|
||||
direct_subgroup_ids: new Set([4, 5, 6]),
|
||||
can_join_group: 1,
|
||||
can_leave_group: 1,
|
||||
can_manage_group: 1,
|
||||
can_mention_group: 1,
|
||||
deactivated: true,
|
||||
};
|
||||
|
||||
const group_permission_settings = mock_esm("../src/group_permission_settings", {});
|
||||
@@ -364,7 +381,7 @@ run_test("can_manage_user_group", ({override}) => {
|
||||
|
||||
function test_user_group_permission_setting(override, setting_name, permission_func) {
|
||||
user_groups.initialize({
|
||||
realm_user_groups: [admins, moderators, members, nobody, students],
|
||||
realm_user_groups: [admins, moderators, members, nobody, students, deactivated_group],
|
||||
});
|
||||
override(realm, "realm_can_manage_all_groups", nobody.id);
|
||||
|
||||
@@ -414,6 +431,9 @@ function test_user_group_permission_setting(override, setting_name, permission_f
|
||||
override(realm, "realm_can_manage_all_groups", moderators.id);
|
||||
override(current_user, "user_id", 2);
|
||||
assert.ok(permission_func(students.id));
|
||||
|
||||
// Cannot perform any join, leave, add, remove if group is deactivated
|
||||
assert.ok(!permission_func(deactivated_group.id));
|
||||
}
|
||||
|
||||
run_test("can_join_user_group", ({override}) => {
|
||||
|
||||
Reference in New Issue
Block a user