docbrown/app/controllers/internal/users_controller.rb

59 lines
1.7 KiB
Ruby

class Internal::UsersController < Internal::ApplicationController
layout "internal"
def index
@users = User.where.not(feed_url: nil)
end
def edit
@user = User.find(params[:id])
end
def update
# Only used for stripping user right now.
@user = User.find(params[:id])
strip_user(@user)
redirect_to "/internal/users/#{@user.id}/edit"
end
def strip_user(user)
return unless user.comments.where("created_at < ?", 7.days.ago).empty?
new_name = "spam_#{rand(10000)}"
new_username = "spam_#{rand(10000)}"
if User.find_by(name: new_name) || User.find_by(username: new_username)
new_name = "spam_#{rand(10000)}"
new_username = "spam_#{rand(10000)}"
end
user.name = new_name
user.username = new_username
user.twitter_username = ""
user.github_username = ""
user.website_url = ""
user.summary = ""
user.location = ""
user.education = ""
user.employer_name = ""
user.employer_url = ""
user.employment_title = ""
user.mostly_work_with = ""
user.currently_learning = ""
user.currently_hacking_on = ""
user.available_for = ""
user.email_public = false
user.add_role :banned
unless user.notes.where(reason: "banned").any?
user.notes.create!(reason: "banned", content: "spam account")
end
user.comments.each do |comment|
comment.reactions.each { |rxn| rxn.delay.destroy! }
comment.delay.destroy!
end
user.articles.each { |article| article.delay.destroy! }
user.remove_from_index!
user.save!
CacheBuster.new.bust("/#{user.old_username}")
user.update!(old_username: nil)
rescue StandardError => e
flash[:error] = e.message
end
end