diff --git a/app/assets/javascripts/admin/addon/controllers/admin-config-group-permissions-settings.js b/app/assets/javascripts/admin/addon/controllers/admin-config-group-permissions-settings.js
new file mode 100644
index 00000000000..16b500a3413
--- /dev/null
+++ b/app/assets/javascripts/admin/addon/controllers/admin-config-group-permissions-settings.js
@@ -0,0 +1,3 @@
+import AdminAreaSettingsBaseController from "admin/controllers/admin-area-settings-base";
+
+export default class AdminConfigGroupPermissionsSettingsController extends AdminAreaSettingsBaseController {}
diff --git a/app/assets/javascripts/admin/addon/routes/admin-config-group-permissions.js b/app/assets/javascripts/admin/addon/routes/admin-config-group-permissions.js
new file mode 100644
index 00000000000..3e123fe30ac
--- /dev/null
+++ b/app/assets/javascripts/admin/addon/routes/admin-config-group-permissions.js
@@ -0,0 +1,8 @@
+import DiscourseRoute from "discourse/routes/discourse";
+import { i18n } from "discourse-i18n";
+
+export default class AdminConfigGroupPermissionsRoute extends DiscourseRoute {
+ titleToken() {
+ return i18n("admin.community.sidebar_link.group_permissions");
+ }
+}
diff --git a/app/assets/javascripts/admin/addon/routes/admin-route-map.js b/app/assets/javascripts/admin/addon/routes/admin-route-map.js
index 2f8e75d8d0f..b87a83ed788 100644
--- a/app/assets/javascripts/admin/addon/routes/admin-route-map.js
+++ b/app/assets/javascripts/admin/addon/routes/admin-route-map.js
@@ -241,6 +241,15 @@ export default function () {
path: "/",
});
});
+ this.route(
+ "groupPermissions",
+ { path: "/group-permissions" },
+ function () {
+ this.route("settings", {
+ path: "/",
+ });
+ }
+ );
this.route("trustLevels", { path: "/trust-levels" }, function () {
this.route("settings", {
path: "/",
diff --git a/app/assets/javascripts/admin/addon/templates/config-group-permissions-settings.gjs b/app/assets/javascripts/admin/addon/templates/config-group-permissions-settings.gjs
new file mode 100644
index 00000000000..163a167e54e
--- /dev/null
+++ b/app/assets/javascripts/admin/addon/templates/config-group-permissions-settings.gjs
@@ -0,0 +1,31 @@
+import RouteTemplate from "ember-route-template";
+import DBreadcrumbsItem from "discourse/components/d-breadcrumbs-item";
+import DPageHeader from "discourse/components/d-page-header";
+import { i18n } from "discourse-i18n";
+import AdminAreaSettings from "admin/components/admin-area-settings";
+
+export default RouteTemplate(
+
+ <:breadcrumbs>
+
+
+
+
+
+
+);
diff --git a/app/assets/javascripts/admin/addon/templates/config-trust-levels-settings.hbs b/app/assets/javascripts/admin/addon/templates/config-trust-levels-settings.hbs
index 28cbb87cece..76b6e99a50e 100644
--- a/app/assets/javascripts/admin/addon/templates/config-trust-levels-settings.hbs
+++ b/app/assets/javascripts/admin/addon/templates/config-trust-levels-settings.hbs
@@ -14,7 +14,7 @@
"site_settings#index"
get "legal" => "site_settings#index"
get "trust-levels" => "site_settings#index"
+ get "group-permissions" => "site_settings#index"
resources :flags, only: %i[index new create update destroy] do
put "toggle"
diff --git a/config/site_settings.yml b/config/site_settings.yml
index 3398f8524b2..90e60a89732 100644
--- a/config/site_settings.yml
+++ b/config/site_settings.yml
@@ -367,12 +367,14 @@ basic:
default: ""
allow_any: false
refresh: true
+ area: "group_permissions"
hidden_post_visible_groups:
type: group_list
list_type: compact
default: "14"
allow_any: false
refresh: true
+ area: "group_permissions"
push_notifications_prompt:
default: true
client: true
@@ -437,6 +439,7 @@ basic:
about_page_hidden_groups:
default: ""
type: group_list
+ area: "group_permissions"
adobe_analytics_tags_url:
default: ""
regex: "assets.adobedtm.com"
@@ -784,6 +787,7 @@ users:
allow_any: false
refresh: true
validator: "AtLeastOneGroupValidator"
+ area: "group_permissions"
anonymous_account_duration_minutes:
default: 10080
max: 99000
@@ -976,6 +980,7 @@ posting:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
editing_grace_period: 300
editing_grace_period_max_diff: 100
editing_grace_period_max_diff_high_trust: 400
@@ -993,6 +998,7 @@ posting:
allow_any: false
refresh: true
validator: "AtLeastOneGroupValidator"
+ area: "group_permissions"
post_edit_time_limit:
default: 1440
max: 10080
@@ -1075,6 +1081,7 @@ posting:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
title_max_word_length:
default: 30
locale_default:
@@ -1190,6 +1197,7 @@ posting:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
approve_new_topics_unless_trust_level:
default: 0
enum: "TrustLevelSetting"
@@ -1200,6 +1208,7 @@ posting:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
approve_suspect_users:
default: true
approve_unless_staged:
@@ -1293,6 +1302,7 @@ posting:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
blur_tl0_flagged_posts_media:
default: true
client: true
@@ -1416,6 +1426,7 @@ email:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
email_in_authserv_id:
default: ""
email_in_spam_header:
@@ -1572,6 +1583,7 @@ email:
default: "1|2"
allow_any: false
refresh: true
+ area: "group_permissions"
files:
max_image_size_kb:
@@ -1723,10 +1735,11 @@ files:
enum: "TrustLevelAndStaffAndDisabledSetting"
hidden: true
uploaded_avatars_allowed_groups:
- default: 10
+ default: "10"
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
default_avatars:
default: ""
type: url_list
@@ -1844,9 +1857,11 @@ trust:
default_trust_level:
default: 0
enum: "TrustLevelSetting"
+ area: "trust_levels"
default_invitee_trust_level:
default: 1
enum: "TrustLevelSetting"
+ area: "trust_levels"
min_trust_to_create_topic:
default: 0
enum: "TrustLevelSetting"
@@ -1857,6 +1872,7 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_to_edit_wiki_post:
default: 1
enum: "TrustLevelSetting"
@@ -1867,6 +1883,7 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_to_edit_post:
default: 0
enum: "TrustLevelSetting"
@@ -1877,6 +1894,7 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_to_allow_self_wiki:
default: 3
enum: "TrustLevelSetting"
@@ -1887,6 +1905,7 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_to_send_email_messages:
default: "4"
enum: "TrustLevelAndStaffSetting"
@@ -1897,6 +1916,7 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_to_flag_posts:
default: 1
enum: "TrustLevelSetting"
@@ -1907,6 +1927,7 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_to_post_links:
default: 0
enum: "TrustLevelSetting"
@@ -1917,6 +1938,7 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_to_post_embedded_media:
default: 0
enum: "TrustLevelSetting"
@@ -1927,6 +1949,7 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_level_to_allow_profile_background:
default: 0
client: true
@@ -1938,6 +1961,7 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_level_to_allow_user_card_background:
default: 0
client: true
@@ -1949,6 +1973,7 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_level_to_allow_invite:
default: 2
enum: "TrustLevelSetting"
@@ -1959,6 +1984,7 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_level_to_allow_ignore:
default: 2
enum: "TrustLevelSetting"
@@ -1970,74 +1996,111 @@ trust:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
allow_flagging_staff: true
send_tl1_welcome_message: true
send_tl2_promotion_message: true
- tl1_requires_topics_entered: 5
+ tl1_requires_topics_entered:
+ default: 5
+ area: "trust_levels"
tl1_requires_read_posts:
default: 30
client: true
- tl1_requires_time_spent_mins: 10
- tl2_requires_topics_entered: 20
- tl2_requires_read_posts: 100
- tl2_requires_time_spent_mins: 60
+ area: "trust_levels"
+ tl1_requires_time_spent_mins:
+ default: 10
+ area: "trust_levels"
+ tl2_requires_topics_entered:
+ default: 20
+ area: "trust_levels"
+ tl2_requires_read_posts:
+ default: 100
+ area: "trust_levels"
+ tl2_requires_time_spent_mins:
+ default: 60
+ area: "trust_levels"
tl2_requires_days_visited:
default: 15
max: 36500
- tl2_requires_likes_received: 1
- tl2_requires_likes_given: 1
- tl2_requires_topic_reply_count: 3
+ area: "trust_levels"
+ tl2_requires_likes_received:
+ default: 1
+ area: "trust_levels"
+ tl2_requires_likes_given:
+ default: 1
+ area: "trust_levels"
+ tl2_requires_topic_reply_count:
+ default: 3
+ area: "trust_levels"
tl3_time_period:
default: 100
min: 1
max: 1000000
+ area: "trust_levels"
tl3_requires_days_visited:
default: 50
max: 36500
+ area: "trust_levels"
tl3_requires_topics_replied_to:
default: 10
+ area: "trust_levels"
tl3_requires_topics_viewed:
default: 25
max: 100
+ area: "trust_levels"
tl3_requires_topics_viewed_cap:
default: 500
+ area: "trust_levels"
tl3_requires_posts_read:
default: 25
max: 100
+ area: "trust_levels"
tl3_requires_posts_read_cap:
default: 20000
max: 99000
+ area: "trust_levels"
tl3_requires_topics_viewed_all_time:
default: 200
+ area: "trust_levels"
tl3_requires_posts_read_all_time:
default: 500
+ area: "trust_levels"
tl3_requires_max_flagged:
default: 5
+ area: "trust_levels"
tl3_promotion_min_duration:
default: 14
max: 10000
+ area: "trust_levels"
tl3_requires_likes_given:
default: 30
+ area: "trust_levels"
tl3_requires_likes_received:
default: 20
+ area: "trust_levels"
tl3_links_no_follow:
default: false
client: true
+ area: "trust_levels"
tl4_delete_posts_and_topics:
default: false
client: true
hidden: true
+ area: "trust_levels"
delete_all_posts_and_topics_allowed_groups:
default: ""
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
edit_all_topic_groups:
default: "13"
type: group_list
+ area: "group_permissions"
edit_all_post_groups:
default: "14"
type: group_list
+ area: "group_permissions"
security:
detailed_404: false
@@ -2188,6 +2251,7 @@ security:
allow_any: false
refresh: true
hidden: true
+ area: "group_permissions"
onebox:
post_onebox_maxlength:
@@ -2508,7 +2572,7 @@ developer:
default: "1|2"
allow_any: false
refresh: true
- area: "navigation"
+ area: "group_permissions|navigation"
warn_critical_js_deprecations:
default: true
client: true
@@ -3220,6 +3284,7 @@ user_api:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
allowed_user_api_push_urls:
default: ""
type: list
@@ -3281,6 +3346,7 @@ tags:
type: group_list
allow_any: false
refresh: true
+ area: "group_permissions"
min_trust_level_to_tag_topics:
default: "0"
enum: "TrustLevelAndStaffSetting"
@@ -3293,6 +3359,7 @@ tags:
allow_any: false
refresh: true
client: true
+ area: "group_permissions"
max_tag_search_results:
client: true
default: 5
@@ -3315,6 +3382,7 @@ tags:
default: ""
allow_any: false
refresh: true
+ area: "group_permissions"
suppress_overlapping_tags_in_list:
default: false
client: true
@@ -3400,7 +3468,7 @@ experimental:
default: ""
allow_any: false
refresh: true
- area: "navigation"
+ area: "group_permissions|navigation"
glimmer_topic_list_mode:
client: true
type: enum
@@ -3431,3 +3499,4 @@ experimental:
default: ""
type: group_list
list_type: compact
+ area: "group_permissions"
diff --git a/plugins/chat/config/settings.yml b/plugins/chat/config/settings.yml
index 0bbb1cdbfe7..59e65d0116f 100644
--- a/plugins/chat/config/settings.yml
+++ b/plugins/chat/config/settings.yml
@@ -12,6 +12,7 @@ chat:
mandatory_values: "1|2" # @admins, @moderators
allow_any: false
refresh: true
+ area: "group_permissions"
chat_threads_enabled:
client: true
default: false
@@ -101,13 +102,14 @@ chat:
allow_any: false
refresh: true
validator: "Chat::DirectMessageEnabledGroupsValidator"
+ area: "group_permissions"
chat_message_flag_allowed_groups:
default: "1|2|11" # @admins, @moderators, @trust_level_1
mandatory_values: "1|2" # @admins, @moderators
type: group_list
allow_any: false
refresh: true
- area: "flags"
+ area: "flags|group_permissions"
max_mentions_per_chat_message:
client: true
type: integer
diff --git a/plugins/poll/config/settings.yml b/plugins/poll/config/settings.yml
index 9eb7522561c..373a36a599a 100644
--- a/plugins/poll/config/settings.yml
+++ b/plugins/poll/config/settings.yml
@@ -22,6 +22,7 @@ plugins:
allow_any: false
refresh: true
validator: "AtLeastOneGroupValidator"
+ area: "group_permissions"
poll_groupable_user_fields:
default: ""
type: list
diff --git a/plugins/styleguide/config/settings.yml b/plugins/styleguide/config/settings.yml
index 6e2bc65e59f..21e9c9c535e 100644
--- a/plugins/styleguide/config/settings.yml
+++ b/plugins/styleguide/config/settings.yml
@@ -11,3 +11,4 @@ plugins:
allow_any: false
refresh: true
validator: "AtLeastOneGroupValidator"
+ area: "group_permissions"