mirror of
https://github.com/zulip/zulip.git
synced 2025-11-17 04:12:02 +00:00
groups: Restrict creating groups to non limited plans.
This commit is contained in:
committed by
Tim Abbott
parent
6e0913d742
commit
cccf1eacb1
@@ -23,6 +23,7 @@ import * as overlays from "./overlays.ts";
|
|||||||
import * as people from "./people.ts";
|
import * as people from "./people.ts";
|
||||||
import * as scroll_util from "./scroll_util.ts";
|
import * as scroll_util from "./scroll_util.ts";
|
||||||
import * as settings_components from "./settings_components.ts";
|
import * as settings_components from "./settings_components.ts";
|
||||||
|
import * as settings_config from "./settings_config.ts";
|
||||||
import * as settings_data from "./settings_data.ts";
|
import * as settings_data from "./settings_data.ts";
|
||||||
import * as settings_org from "./settings_org.ts";
|
import * as settings_org from "./settings_org.ts";
|
||||||
import {current_user, realm} from "./state_data.ts";
|
import {current_user, realm} from "./state_data.ts";
|
||||||
@@ -837,6 +838,10 @@ export function setup_page(callback) {
|
|||||||
function populate_and_fill() {
|
function populate_and_fill() {
|
||||||
const template_data = {
|
const template_data = {
|
||||||
can_create_user_groups: settings_data.user_can_create_user_groups(),
|
can_create_user_groups: settings_data.user_can_create_user_groups(),
|
||||||
|
zulip_plan_is_not_limited: realm.zulip_plan_is_not_limited,
|
||||||
|
upgrade_text_for_wide_organization_logo: realm.upgrade_text_for_wide_organization_logo,
|
||||||
|
is_business_type_org:
|
||||||
|
realm.realm_org_type === settings_config.all_org_type_values.business.code,
|
||||||
max_user_group_name_length,
|
max_user_group_name_length,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -92,6 +92,12 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
top: -5px;
|
top: -5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
/* Replicate disabled values */
|
||||||
|
cursor: not-allowed;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#create_user_group_description,
|
#create_user_group_description,
|
||||||
@@ -365,8 +371,7 @@ h4.user_group_setting_subsection_title {
|
|||||||
|
|
||||||
.left .no-streams-to-show,
|
.left .no-streams-to-show,
|
||||||
.left .no-groups-to-show,
|
.left .no-groups-to-show,
|
||||||
.right .nothing-selected .create-stream-button-container,
|
.right .nothing-selected .create-stream-button-container {
|
||||||
.right .nothing-selected .create-group-button-container {
|
|
||||||
display: block;
|
display: block;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
@@ -397,6 +402,18 @@ h4.user_group_setting_subsection_title {
|
|||||||
|
|
||||||
.create-group-button-container {
|
.create-group-button-container {
|
||||||
margin-top: calc(45vh - 134px);
|
margin-top: calc(45vh - 134px);
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.settings-empty-option-text {
|
||||||
|
color: hsl(0deg 0% 67%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.upgrade-or-sponsorship-tip,
|
||||||
|
.upgrade-tip {
|
||||||
|
/* Center tip in parent container */
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<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_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" {{#if (not zulip_plan_is_not_limited)}}disabled{{/if}}>
|
||||||
<span class="create_button_plus_sign">+</span>
|
<span class="create_button_plus_sign">+</span>
|
||||||
</button>
|
</button>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@@ -52,7 +52,8 @@
|
|||||||
<div class="nothing-selected">
|
<div class="nothing-selected">
|
||||||
<div class="group-info-banner"></div>
|
<div class="group-info-banner"></div>
|
||||||
<div class="create-group-button-container">
|
<div class="create-group-button-container">
|
||||||
<button type="button" class="create_user_group_button animated-purple-button" {{#unless can_create_user_groups}}disabled{{/unless}}>{{t 'Create user group' }}</button>
|
{{> ../settings/upgrade_tip_widget . }}
|
||||||
|
<button type="button" class="create_user_group_button animated-purple-button" {{#unless (and can_create_user_groups zulip_plan_is_not_limited)}}disabled{{/unless}}>{{t 'Create user group' }}</button>
|
||||||
{{#unless can_create_user_groups}}
|
{{#unless can_create_user_groups}}
|
||||||
<span class="settings-empty-option-text">
|
<span class="settings-empty-option-text">
|
||||||
{{t 'You do not have permission to create user groups.' }}
|
{{t 'You do not have permission to create user groups.' }}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from zerver.actions.create_realm import do_create_realm
|
|||||||
from zerver.actions.create_user import do_reactivate_user
|
from zerver.actions.create_user import do_reactivate_user
|
||||||
from zerver.actions.realm_settings import (
|
from zerver.actions.realm_settings import (
|
||||||
do_change_realm_permission_group_setting,
|
do_change_realm_permission_group_setting,
|
||||||
|
do_change_realm_plan_type,
|
||||||
do_set_realm_property,
|
do_set_realm_property,
|
||||||
)
|
)
|
||||||
from zerver.actions.streams import (
|
from zerver.actions.streams import (
|
||||||
@@ -453,6 +454,14 @@ class UserGroupAPITestCase(UserGroupTestCase):
|
|||||||
self.assert_json_success(result)
|
self.assert_json_success(result)
|
||||||
self.assert_length(NamedUserGroup.objects.filter(realm=hamlet.realm), 10)
|
self.assert_length(NamedUserGroup.objects.filter(realm=hamlet.realm), 10)
|
||||||
|
|
||||||
|
# User groups should not be allowed to be created on limited plans.
|
||||||
|
original_plan_type = hamlet.realm.plan_type
|
||||||
|
do_change_realm_plan_type(hamlet.realm, Realm.PLAN_TYPE_LIMITED, acting_user=None)
|
||||||
|
result = self.client_post("/json/user_groups/create", info=params)
|
||||||
|
self.assert_json_error(result, "Available on Zulip Cloud Standard. Upgrade to access.")
|
||||||
|
self.assert_length(NamedUserGroup.objects.filter(realm=hamlet.realm), 10)
|
||||||
|
do_change_realm_plan_type(hamlet.realm, original_plan_type, acting_user=None)
|
||||||
|
|
||||||
# Check default value of settings.
|
# Check default value of settings.
|
||||||
everyone_system_group = NamedUserGroup.objects.get(
|
everyone_system_group = NamedUserGroup.objects.get(
|
||||||
name="role:everyone", realm=hamlet.realm, is_system_group=True
|
name="role:everyone", realm=hamlet.realm, is_system_group=True
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ def add_user_group(
|
|||||||
can_manage_group: Json[int | AnonymousSettingGroupDict] | None = None,
|
can_manage_group: Json[int | AnonymousSettingGroupDict] | None = None,
|
||||||
can_mention_group: Json[int | AnonymousSettingGroupDict] | None = None,
|
can_mention_group: Json[int | AnonymousSettingGroupDict] | None = None,
|
||||||
) -> HttpResponse:
|
) -> HttpResponse:
|
||||||
|
user_profile.realm.ensure_not_on_limited_plan()
|
||||||
user_profiles = user_ids_to_users(members, user_profile.realm, allow_deactivated=False)
|
user_profiles = user_ids_to_users(members, user_profile.realm, allow_deactivated=False)
|
||||||
name = check_user_group_name(name)
|
name = check_user_group_name(name)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user