From 4d593d1c186326ed6c4733a3bbe7cf1de04f62fd Mon Sep 17 00:00:00 2001 From: Arpit Jalan Date: Fri, 5 Jun 2015 10:22:41 +0530 Subject: [PATCH] FIX: staff should be immune to max_invites_per_day setting --- lib/guardian.rb | 4 ++-- spec/components/guardian_spec.rb | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/guardian.rb b/lib/guardian.rb index 06518f6afe5..6cc1e9e3fb1 100644 --- a/lib/guardian.rb +++ b/lib/guardian.rb @@ -200,7 +200,7 @@ class Guardian def can_invite_to_forum?(groups=nil) authenticated? && - SiteSetting.max_invites_per_day.to_i > 0 && + (SiteSetting.max_invites_per_day.to_i > 0 || is_staff?) && !SiteSetting.enable_sso && SiteSetting.enable_local_logins && ( @@ -213,8 +213,8 @@ class Guardian def can_invite_to?(object, group_ids=nil) return false if ! authenticated? return false unless ( SiteSetting.enable_local_logins && (!SiteSetting.must_approve_users? || is_staff?) ) - return false if SiteSetting.max_invites_per_day.to_i == 0 return true if is_admin? + return false if (SiteSetting.max_invites_per_day.to_i == 0 && !is_staff?) return false if ! can_see?(object) return false if group_ids.present? diff --git a/spec/components/guardian_spec.rb b/spec/components/guardian_spec.rb index d5e6a8c1375..87276664909 100644 --- a/spec/components/guardian_spec.rb +++ b/spec/components/guardian_spec.rb @@ -248,7 +248,10 @@ describe Guardian do it 'returns false when max_invites_per_day is 0' do # let's also break it while here SiteSetting.max_invites_per_day = "a" - expect(Guardian.new(moderator).can_invite_to_forum?).to be_falsey + + expect(Guardian.new(user).can_invite_to_forum?).to be_falsey + # staff should be immune to max_invites_per_day setting + expect(Guardian.new(moderator).can_invite_to_forum?).to be_truthy end it 'returns false when the site requires approving users and is regular' do @@ -283,7 +286,10 @@ describe Guardian do expect(Guardian.new(user).can_invite_to?(topic)).to be_falsey SiteSetting.max_invites_per_day = 0 - expect(Guardian.new(moderator).can_invite_to?(topic)).to be_falsey + + expect(Guardian.new(user).can_invite_to?(topic)).to be_falsey + # staff should be immune to max_invites_per_day setting + expect(Guardian.new(moderator).can_invite_to?(topic)).to be_truthy end it 'returns true when the site requires approving users and is mod' do