docbrown/app/services/users/delete.rb
Michael Kohl 0af8fc1866
Prevent suspended users from self-deleting and returning (#12503)
* Add new table and model

* Store banned user username hash on delete

* Prevent previously banned user from signing up again

* Update method name

* Refactor code and add more specs

* Test improvements

* Don't override existing global flash

* Fix typo

* Update spec description

* Update schema.rb

* More schema.rb fixes

* Simplify spec

* Update migration

* Clean up migration

* Rename method

* Add DataDog counter

* Revisit error handling

* Remove spurious empty line

* Make model name more explicit
2021-02-11 09:28:59 +07:00

38 lines
721 B
Ruby

module Users
class Delete
def initialize(user)
@user = user
end
def call
delete_comments
delete_articles
delete_user_activity
user.unsubscribe_from_newsletters
EdgeCache::Bust.call("/#{user.username}")
Users::SuspendedUsername.create_from_user(user) if user.has_role?(:banned)
user.destroy
Rails.cache.delete("user-destroy-token-#{user.id}")
end
def self.call(*args)
new(*args).call
end
private
attr_reader :user
def delete_user_activity
DeleteActivity.call(user)
end
def delete_comments
DeleteComments.call(user)
end
def delete_articles
DeleteArticles.call(user)
end
end
end