From bc476978e80e115ea5108573f9fa23eb1295af82 Mon Sep 17 00:00:00 2001 From: Bianca Nenciu Date: Wed, 27 Jul 2022 15:44:41 +0300 Subject: [PATCH] FIX: Support for group everyone in tag setting (#17669) The "everyone" group is an automatic group and GroupUser records do not exist for it. This commit allows all users if the group everyone is one of the groups in the setting "pm_tags_allowed_for_groups". --- lib/guardian/tag_guardian.rb | 6 +++++- spec/lib/guardian_spec.rb | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/lib/guardian/tag_guardian.rb b/lib/guardian/tag_guardian.rb index 6de9672b87e..4f14858f013 100644 --- a/lib/guardian/tag_guardian.rb +++ b/lib/guardian/tag_guardian.rb @@ -11,8 +11,12 @@ module TagGuardian end def can_tag_pms? + return false if !SiteSetting.tagging_enabled return false if @user.blank? - SiteSetting.tagging_enabled && @user == Discourse.system_user || @user.group_users.exists?(group_id: SiteSetting.pm_tags_allowed_for_groups.to_s.split("|").map(&:to_i)) + return true if @user == Discourse.system_user + + group_ids = SiteSetting.pm_tags_allowed_for_groups.to_s.split("|").map(&:to_i) + group_ids.include?(Group::AUTO_GROUPS[:everyone]) || @user.group_users.exists?(group_id: group_ids) end def can_admin_tags? diff --git a/spec/lib/guardian_spec.rb b/spec/lib/guardian_spec.rb index ddcfe12988e..2d0a3ef6274 100644 --- a/spec/lib/guardian_spec.rb +++ b/spec/lib/guardian_spec.rb @@ -3379,6 +3379,22 @@ describe Guardian do end end end + + context "tagging PMs" do + it "pm_tags_allowed_for_groups contains everyone" do + SiteSetting.pm_tags_allowed_for_groups = "#{Group::AUTO_GROUPS[:everyone]}" + + expect(Guardian.new(user).can_tag_pms?).to be_truthy + end + + it "pm_tags_allowed_for_groups contains a group" do + SiteSetting.pm_tags_allowed_for_groups = "#{group.id}" + group.add(member) + + expect(Guardian.new(user).can_tag_pms?).to be_falsey + expect(Guardian.new(member).can_tag_pms?).to be_truthy + end + end end describe(:can_see_group) do