Account deletion (#3728)
* Add form for account deletion * If avatar or header are gone from source, remove them * Add option to have SuspendAccountService remove user record, add tests * Exclude suspended accounts from search
This commit is contained in:
@ -1,9 +1,10 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class SuspendAccountService < BaseService
|
||||
def call(account)
|
||||
def call(account, remove_user = false)
|
||||
@account = account
|
||||
|
||||
purge_user if remove_user
|
||||
purge_content
|
||||
purge_profile
|
||||
unsubscribe_push_subscribers
|
||||
@ -11,6 +12,10 @@ class SuspendAccountService < BaseService
|
||||
|
||||
private
|
||||
|
||||
def purge_user
|
||||
@account.user.destroy
|
||||
end
|
||||
|
||||
def purge_content
|
||||
@account.statuses.reorder(nil).find_each do |status|
|
||||
# This federates out deletes to previous followers
|
||||
|
@ -27,8 +27,19 @@ class UpdateRemoteProfileService < BaseService
|
||||
account.locked = remote_profile.locked?
|
||||
|
||||
if !account.suspended? && !DomainBlock.find_by(domain: account.domain)&.reject_media?
|
||||
account.avatar_remote_url = remote_profile.avatar if remote_profile.avatar.present?
|
||||
account.header_remote_url = remote_profile.header if remote_profile.header.present?
|
||||
if remote_profile.avatar.present?
|
||||
account.avatar_remote_url = remote_profile.avatar
|
||||
else
|
||||
account.avatar_remote_url = ''
|
||||
account.avatar.destroy
|
||||
end
|
||||
|
||||
if remote_profile.header.present?
|
||||
account.header_remote_url = remote_profile.header
|
||||
else
|
||||
account.header_remote_url = ''
|
||||
account.header.destroy
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user