2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2025-09-06 10:50:21 +08:00

FIX: Admin should always be able to view group messages.

Follow-up to b0f22f2523.

Before this fix, `SiteSetting.enable_personal_messages = false` will
prevent admin from viewing group messages.
This commit is contained in:
Guo Xiang Tan 2020-09-09 08:58:21 +08:00
parent cce41f32b8
commit 0398271f87
No known key found for this signature in database
GPG key ID: FBD110179AAC1F20
2 changed files with 42 additions and 10 deletions

View file

@ -34,8 +34,8 @@ module GroupGuardian
end end
def can_see_group_messages?(group) def can_see_group_messages?(group)
SiteSetting.enable_personal_messages? && ( return true if is_admin?
is_admin? || group.users.include?(user)
) SiteSetting.enable_personal_messages? && group.users.include?(user)
end end
end end

View file

@ -173,15 +173,44 @@ RSpec.describe ListController do
end end
describe '#private_messages_group' do describe '#private_messages_group' do
let(:user) do let(:user) { Fabricate(:user) }
user = Fabricate(:user)
group.add(user) describe 'with personal_messages disabled' do
sign_in(user) let!(:topic) { Fabricate(:private_message_topic, allowed_groups: [group]) }
user
before do
group.add(user)
SiteSetting.enable_personal_messages = false
end
it 'should display group private messages for an admin' do
sign_in(Fabricate(:admin))
get "/topics/private-messages-group/#{user.username}/#{group.name}.json"
expect(response.status).to eq(200)
expect(response.parsed_body["topic_list"]["topics"].first["id"])
.to eq(topic.id)
end
it "should not display group private messages for a moderator's group" do
moderator = Fabricate(:moderator)
sign_in(moderator)
group.add(moderator)
get "/topics/private-messages-group/#{user.username}/#{group.name}.json"
expect(response.status).to eq(404)
end
end end
describe 'with unicode_usernames' do describe 'with unicode_usernames' do
before { SiteSetting.unicode_usernames = false } before do
group.add(user)
sign_in(user)
SiteSetting.unicode_usernames = false
end
it 'should return the right response when user does not belong to group' do it 'should return the right response when user does not belong to group' do
Fabricate(:private_message_topic, allowed_groups: [group]) Fabricate(:private_message_topic, allowed_groups: [group])
@ -205,7 +234,10 @@ RSpec.describe ListController do
end end
describe 'with unicode_usernames' do describe 'with unicode_usernames' do
before { SiteSetting.unicode_usernames = true } before do
sign_in(user)
SiteSetting.unicode_usernames = true
end
it 'Returns a 200 with unicode group name' do it 'Returns a 200 with unicode group name' do
unicode_group = Fabricate(:group, name: '群群组') unicode_group = Fabricate(:group, name: '群群组')