mirror of
https://github.com/discourse/discourse.git
synced 2025-05-30 15:28:37 +08:00
Users who have made no more than one post can delete their own accounts from their user preferences page.
This commit is contained in:
38
lib/guardian/user_guardian.rb
Normal file
38
lib/guardian/user_guardian.rb
Normal file
@ -0,0 +1,38 @@
|
||||
# mixin for all Guardian methods dealing with user permissions
|
||||
module UserGuardian
|
||||
|
||||
def can_edit_user?(user)
|
||||
is_me?(user) || is_staff?
|
||||
end
|
||||
|
||||
def can_edit_username?(user)
|
||||
return true if is_staff?
|
||||
return false if SiteSetting.username_change_period <= 0
|
||||
is_me?(user) && (user.post_count == 0 || user.created_at > SiteSetting.username_change_period.days.ago)
|
||||
end
|
||||
|
||||
def can_edit_email?(user)
|
||||
return true if is_staff?
|
||||
return false unless SiteSetting.email_editable?
|
||||
can_edit?(user)
|
||||
end
|
||||
|
||||
def can_block_user?(user)
|
||||
user && is_staff? && not(user.staff?)
|
||||
end
|
||||
|
||||
def can_unblock_user?(user)
|
||||
user && is_staff?
|
||||
end
|
||||
|
||||
def can_delete_user?(user)
|
||||
return false if user.nil?
|
||||
return false if user.admin?
|
||||
if is_me?(user)
|
||||
user.post_count <= 1
|
||||
else
|
||||
is_staff? && user.created_at > SiteSetting.delete_user_max_age.to_i.days.ago
|
||||
end
|
||||
end
|
||||
|
||||
end
|
Reference in New Issue
Block a user