FEATURE - Moderators can create and manage groups (#10432)

Enabling the moderators_manage_categories_and_groups site setting will allow moderator users to create/manage groups.

* show New Group form to moderators

* Allow moderators to update groups and read logs, where appropriate

* Rename site setting from create -> manage

* improved tests

* Migration should rename old log entries

* Log group changes, even if those changes mean you can no longer see the group

* Slight reshuffle

* RouteTo /g if they no longer have permissions to view group
This commit is contained in:
jbrw
2020-08-19 10:41:40 -04:00
committed by GitHub
parent 3640c00b03
commit aa1fc01307
29 changed files with 241 additions and 32 deletions

View File

@ -8,7 +8,13 @@ acceptance("Managing Group Interaction Settings", {
});
QUnit.test("As an admin", async assert => {
await visit("/g/discourse/manage/interaction");
updateCurrentUser({
moderator: false,
admin: true,
can_create_group: true
});
await visit("/g/alternative-group/manage/interaction");
assert.equal(
find(".groups-form-visibility-level").length,
@ -42,13 +48,18 @@ QUnit.test("As an admin", async assert => {
});
QUnit.test("As a group owner", async assert => {
updateCurrentUser({ moderator: false, admin: false });
updateCurrentUser({
moderator: false,
admin: false,
can_create_group: false
});
await visit("/g/discourse/manage/interaction");
assert.equal(
find(".groups-form-visibility-level").length,
0,
"it should display visibility level selector"
"it should not display visibility level selector"
);
assert.equal(

View File

@ -6,7 +6,9 @@ acceptance("Managing Group Membership", {
});
QUnit.test("As an admin", async assert => {
await visit("/g/discourse/manage/membership");
updateCurrentUser({ can_create_group: true });
await visit("/g/alternative-group/manage/membership");
assert.ok(
find('label[for="automatic_membership"]').length === 1,

View File

@ -34,7 +34,11 @@ QUnit.test("As an admin", async assert => {
});
QUnit.test("As a group owner", async assert => {
updateCurrentUser({ moderator: false, admin: false });
updateCurrentUser({
moderator: false,
admin: false,
can_create_group: false
});
await visit("/g/discourse/manage/profile");

View File

@ -1273,5 +1273,27 @@ export default {
"/user_avatar/meta.discourse.org/codinghorror/{size}/5297.png"
}
}
]
],
"/groups/alternative-group.json": {
group: {
id: 57,
automatic: false,
name: "alternative-group",
full_name: "Moderatable Table",
user_count: 8,
alias_level: 99,
visible: true,
public_admission: true,
public_exit: false,
flair_url: "fa-adjust",
is_group_owner: true,
mentionable: true,
messageable: true,
can_see_members: true,
can_admin_group: true,
},
extras: {
visible_group_names: ["alternative-group"]
}
}
};

View File

@ -14,6 +14,7 @@ export default {
site_flagged_posts_count: 1,
moderator: true,
staff: true,
can_create_group: true,
title: "co-founder",
reply_count: 859,
topic_count: 36,

View File

@ -52,6 +52,7 @@ QUnit.test("canMangeGroup", assert => {
);
group.set("automatic", false);
group.setProperties({ can_admin_group: true });
assert.equal(
user.canManageGroup(group),