diff --git a/app/assets/javascripts/discourse/app/components/group-manage-save-button.js b/app/assets/javascripts/discourse/app/components/group-manage-save-button.js index 91a6adbed76..9e385d6c28d 100644 --- a/app/assets/javascripts/discourse/app/components/group-manage-save-button.js +++ b/app/assets/javascripts/discourse/app/components/group-manage-save-button.js @@ -3,6 +3,7 @@ import discourseComputed from "discourse-common/utils/decorators"; import Component from "@ember/component"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { popupAutomaticMembershipAlert } from "discourse/controllers/groups-new"; +import DiscourseURL from "discourse/lib/url"; export default Component.extend({ saving: null, @@ -24,7 +25,11 @@ export default Component.extend({ return group .save() - .then(() => { + .then(data => { + if (data.route_to) { + DiscourseURL.routeTo(data.route_to); + } + this.set("saved", true); }) .catch(popupAjaxError) diff --git a/app/assets/javascripts/discourse/app/components/groups-form-interaction-fields.js b/app/assets/javascripts/discourse/app/components/groups-form-interaction-fields.js index d241176c384..bd5689a93e5 100644 --- a/app/assets/javascripts/discourse/app/components/groups-form-interaction-fields.js +++ b/app/assets/javascripts/discourse/app/components/groups-form-interaction-fields.js @@ -70,5 +70,14 @@ export default Component.extend({ ) showEmailSettings(emailIn, automatic, isAdmin) { return emailIn && isAdmin && !automatic; + }, + + @discourseComputed( + "model.isCreated", + "model.can_admin_group", + "currentUser.can_create_group" + ) + canAdminGroup(isCreated, canAdmin, canCreate) { + return (!isCreated && canCreate) || (isCreated && canAdmin); } }); diff --git a/app/assets/javascripts/discourse/app/controllers/group.js b/app/assets/javascripts/discourse/app/controllers/group.js index e4b62a0b953..7073fcf1c7a 100644 --- a/app/assets/javascripts/discourse/app/controllers/group.js +++ b/app/assets/javascripts/discourse/app/controllers/group.js @@ -128,7 +128,7 @@ export default Controller.extend({ return ( this.currentUser && (this.currentUser.canManageGroup(model) || - (this.currentUser.admin && automatic)) + (model.can_admin_group && automatic)) ); }, diff --git a/app/assets/javascripts/discourse/app/models/user.js b/app/assets/javascripts/discourse/app/models/user.js index a30d248e3c5..2267727bd58 100644 --- a/app/assets/javascripts/discourse/app/models/user.js +++ b/app/assets/javascripts/discourse/app/models/user.js @@ -833,7 +833,7 @@ const User = RestModel.extend({ canManageGroup(group) { return group.get("automatic") ? false - : this.admin || group.get("is_group_owner"); + : group.get("can_admin_group") || group.get("is_group_owner"); }, @discourseComputed("groups.@each.title", "badges.[]") diff --git a/app/assets/javascripts/discourse/app/routes/group-manage.js b/app/assets/javascripts/discourse/app/routes/group-manage.js index ec052e047e8..2748ebeea75 100644 --- a/app/assets/javascripts/discourse/app/routes/group-manage.js +++ b/app/assets/javascripts/discourse/app/routes/group-manage.js @@ -15,7 +15,7 @@ export default DiscourseRoute.extend({ afterModel(group) { if ( !this.currentUser || - (!(this.currentUser.admin && group.get("automatic")) && + (!(this.modelFor("group").can_admin_group && group.get("automatic")) && !this.currentUser.canManageGroup(group)) ) { this.transitionTo("group.members", group); diff --git a/app/assets/javascripts/discourse/app/routes/groups-new.js b/app/assets/javascripts/discourse/app/routes/groups-new.js index 9da8dca7da7..95fb70744e4 100644 --- a/app/assets/javascripts/discourse/app/routes/groups-new.js +++ b/app/assets/javascripts/discourse/app/routes/groups-new.js @@ -18,7 +18,7 @@ export default DiscourseRoute.extend({ }, afterModel() { - if (!(this.currentUser && this.currentUser.admin)) { + if (!this.get("currentUser.can_create_group")) { this.transitionTo("groups"); } } diff --git a/app/assets/javascripts/discourse/app/templates/components/groups-form-interaction-fields.hbs b/app/assets/javascripts/discourse/app/templates/components/groups-form-interaction-fields.hbs index cad46c66847..80d0b147547 100644 --- a/app/assets/javascripts/discourse/app/templates/components/groups-form-interaction-fields.hbs +++ b/app/assets/javascripts/discourse/app/templates/components/groups-form-interaction-fields.hbs @@ -1,4 +1,4 @@ -{{#if currentUser.admin}} +{{#if canAdminGroup}}
@@ -62,7 +62,7 @@ }}
-{{#if currentUser.admin}} +{{#if canAdminGroup}}