diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index ddb65adb90c..e4557eec2d9 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -966,15 +966,21 @@ export default Ember.Controller.extend(BufferedContent, { canDeselectAll: Ember.computed.alias("selectedAllPosts"), @computed( + "currentUser.staff", "selectedPostsCount", "selectedAllPosts", "selectedPosts", "selectedPosts.[]" ) - canDeleteSelected(selectedPostsCount, selectedAllPosts, selectedPosts) { + canDeleteSelected( + isStaff, + selectedPostsCount, + selectedAllPosts, + selectedPosts + ) { return ( selectedPostsCount > 0 && - (selectedAllPosts || selectedPosts.every(p => p.can_delete)) + ((selectedAllPosts && isStaff) || selectedPosts.every(p => p.can_delete)) ); }, diff --git a/test/javascripts/controllers/topic-test.js.es6 b/test/javascripts/controllers/topic-test.js.es6 index d8a907acad4..0e3c4e72216 100644 --- a/test/javascripts/controllers/topic-test.js.es6 +++ b/test/javascripts/controllers/topic-test.js.es6 @@ -209,7 +209,11 @@ QUnit.test("canDeleteSelected", function(assert) { ], stream: [1, 2, 3] }; - + const currentUser = Discourse.User.create({ admin: false }); + this.registry.register("current-user:main", currentUser, { + instantiate: false + }); + this.registry.injection("controller", "currentUser", "current-user:main"); const model = Topic.create({ postStream }); const controller = this.subject({ model }); const selectedPostIds = controller.get("selectedPostIds"); @@ -235,9 +239,16 @@ QUnit.test("canDeleteSelected", function(assert) { selectedPostIds.pushObject(1); + assert.not( + controller.get("canDeleteSelected"), + "false when all posts are selected and user is staff" + ); + + currentUser.set("admin", true); + assert.ok( controller.get("canDeleteSelected"), - "true when all posts are selected" + "true when all posts are selected and user is staff" ); });