* 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
38 lines
721 B
Ruby
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
|