diff --git a/lib/guardian/post_guardian.rb b/lib/guardian/post_guardian.rb index aa92423b57c..4344e5fd34f 100644 --- a/lib/guardian/post_guardian.rb +++ b/lib/guardian/post_guardian.rb @@ -22,7 +22,9 @@ module PostGuardian result = if authenticated? && post && !@user.anonymous? # post made by staff, but we don't allow staff flags - return false if !SiteSetting.allow_flagging_staff? && post.user.staff? + return false if is_flag && + (!SiteSetting.allow_flagging_staff?) && + post.user.staff? return false if [:notify_user, :notify_moderators].include?(action_key) && !SiteSetting.enable_personal_messages? diff --git a/spec/components/guardian_spec.rb b/spec/components/guardian_spec.rb index 77667c4e014..0fc91d7b792 100644 --- a/spec/components/guardian_spec.rb +++ b/spec/components/guardian_spec.rb @@ -83,6 +83,12 @@ describe Guardian do expect(Guardian.new(user).post_can_act?(staff_post, :spam)).to eq(false) end + it "allows liking of staff when allow_flagging_staff is false" do + SiteSetting.allow_flagging_staff = false + staff_post = Fabricate(:post, user: Fabricate(:moderator)) + expect(Guardian.new(user).post_can_act?(staff_post, :like)).to eq(true) + end + it "returns false when liking yourself" do expect(Guardian.new(post.user).post_can_act?(post, :like)).to be_falsey end