diff --git a/lib/guardian.rb b/lib/guardian.rb index 9445617079..8a04667df3 100644 --- a/lib/guardian.rb +++ b/lib/guardian.rb @@ -210,7 +210,7 @@ class Guardian # Have to be a basic level at least @user.has_trust_level?(:basic) && # PMs are enabled - SiteSetting.enable_private_messages + (SiteSetting.enable_private_messages || @user.username == SiteSetting.site_contact_username) end private diff --git a/spec/components/guardian_spec.rb b/spec/components/guardian_spec.rb index 50092b4197..5952bd7598 100644 --- a/spec/components/guardian_spec.rb +++ b/spec/components/guardian_spec.rb @@ -128,6 +128,19 @@ describe Guardian do it "returns true to another user" do Guardian.new(user).can_send_private_message?(another_user).should be_true end + + context "enable_private_messages is false" do + before { SiteSetting.stubs(:enable_private_messages).returns(false) } + + it "returns false if user is not the contact user" do + Guardian.new(user).can_send_private_message?(another_user).should be_false + end + + it "returns true for the contact user" do + SiteSetting.stubs(:site_contact_username).returns(user.username) + Guardian.new(user).can_send_private_message?(another_user).should be_true + end + end end describe 'can_reply_as_new_topic' do