diff --git a/lib/guardian.rb b/lib/guardian.rb index a34dadd7102..3ea110c00ee 100644 --- a/lib/guardian.rb +++ b/lib/guardian.rb @@ -162,7 +162,7 @@ class Guardian def can_see?(obj) if obj see_method = method_name_for :see, obj - (see_method ? public_send(see_method, obj) : true) + see_method && public_send(see_method, obj) end end diff --git a/lib/guardian/tag_guardian.rb b/lib/guardian/tag_guardian.rb index db1ec7688ce..f6fd968e984 100644 --- a/lib/guardian/tag_guardian.rb +++ b/lib/guardian/tag_guardian.rb @@ -2,6 +2,10 @@ #mixin for all guardian methods dealing with tagging permissions module TagGuardian + def can_see_tag?(_tag) + true + end + def can_create_tag? SiteSetting.tagging_enabled && @user.has_trust_level_or_staff?(SiteSetting.min_trust_to_create_tag) diff --git a/lib/guardian/user_guardian.rb b/lib/guardian/user_guardian.rb index 2879ad036f9..f81b78271d0 100644 --- a/lib/guardian/user_guardian.rb +++ b/lib/guardian/user_guardian.rb @@ -118,6 +118,10 @@ module UserGuardian user && can_administer_user?(user) end + def can_see_user?(_user) + true + end + def can_see_profile?(user) return false if user.blank? return true if !SiteSetting.allow_users_to_hide_profile? diff --git a/spec/lib/guardian/user_guardian_spec.rb b/spec/lib/guardian/user_guardian_spec.rb index b6b0ab0e804..5808d2a8f50 100644 --- a/spec/lib/guardian/user_guardian_spec.rb +++ b/spec/lib/guardian/user_guardian_spec.rb @@ -91,6 +91,12 @@ RSpec.describe UserGuardian do end end + describe "#can_see_user?" do + it "is always true" do + expect(Guardian.new.can_see_user?(anything)).to eq(true) + end + end + describe "#can_see_profile?" do it "is false for no user" do expect(Guardian.new.can_see_profile?(nil)).to eq(false) diff --git a/spec/lib/guardian_spec.rb b/spec/lib/guardian_spec.rb index 52c2885d7e0..fba8a71e48b 100644 --- a/spec/lib/guardian_spec.rb +++ b/spec/lib/guardian_spec.rb @@ -861,6 +861,11 @@ RSpec.describe Guardian do expect(Guardian.new.can_see?(nil)).to be_falsey end + it "returns false when no visibility method is defined for the object" do + unguarded_object = 42 + expect(Guardian.new.can_see?(unguarded_object)).to be_falsey + end + describe "a Category" do it "allows public categories" do public_category = Fabricate(:category, read_restricted: false) @@ -3532,6 +3537,12 @@ RSpec.describe Guardian do context "when min_trust_to_create_tag is 3" do before { SiteSetting.min_trust_to_create_tag = 3 } + describe "#can_see_tag?" do + it "is always true" do + expect(Guardian.new.can_see_tag?(anything)).to be_truthy + end + end + describe "can_create_tag" do it "returns false if trust level is too low" do expect(Guardian.new(trust_level_2).can_create_tag?).to be_falsey