mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 08:43:25 +08:00
FIX: guardian always got user but sometimes it is anonymous (#9342)
* FIX: guardian always got user but sometimes it is anonymous ``` def initialize(user = nil, request = nil) @user = user.presence || AnonymousUser.new @request = request end ``` AnonymouseUser defines `blank?` method ``` class AnonymousUser def blank? true end ... end ``` so if we would use @user.present? it would be correct, however, just @user is always true
This commit is contained in:
parent
f8ec5f309a
commit
ce00da3bcd
|
@ -319,7 +319,7 @@ class Guardian
|
|||
# Support sites that have to approve users
|
||||
def can_access_forum?
|
||||
return true unless SiteSetting.must_approve_users?
|
||||
return false unless @user
|
||||
return false if anonymous?
|
||||
|
||||
# Staff can't lock themselves out of a site
|
||||
return true if is_staff?
|
||||
|
@ -442,7 +442,7 @@ class Guardian
|
|||
end
|
||||
|
||||
def can_export_entity?(entity)
|
||||
return false unless @user
|
||||
return false if anonymous?
|
||||
return true if is_admin?
|
||||
return entity != 'user_list' if is_moderator?
|
||||
|
||||
|
|
|
@ -2743,6 +2743,7 @@ describe Guardian do
|
|||
end
|
||||
|
||||
describe '#can_export_entity?' do
|
||||
let(:anonymous_guardian) { Guardian.new }
|
||||
let(:user_guardian) { Guardian.new(user) }
|
||||
let(:moderator_guardian) { Guardian.new(moderator) }
|
||||
let(:admin_guardian) { Guardian.new(admin) }
|
||||
|
@ -2758,6 +2759,10 @@ describe Guardian do
|
|||
expect(moderator_guardian.can_export_entity?('staff_action')).to be_truthy
|
||||
expect(admin_guardian.can_export_entity?('staff_action')).to be_truthy
|
||||
end
|
||||
|
||||
it 'does not allow anonymous to export' do
|
||||
expect(anonymous_guardian.can_export_entity?('user_archive')).to be_falsey
|
||||
end
|
||||
end
|
||||
|
||||
describe '#can_ignore_user?' do
|
||||
|
|
Loading…
Reference in New Issue
Block a user