49 lines
1 KiB
Ruby
49 lines
1 KiB
Ruby
|
|
# Run this script and follow the onscreen instructions:
|
||
|
|
# bundle exec rails r script/lock_admin.rb
|
||
|
|
|
||
|
|
puts <<~PROMPT
|
||
|
|
Enter a comma-separated list of admin logins to lock or type ALL to lock all
|
||
|
|
admin accounts:
|
||
|
|
|
||
|
|
PROMPT
|
||
|
|
|
||
|
|
input = gets.chomp
|
||
|
|
|
||
|
|
admins = []
|
||
|
|
invalid_logins = []
|
||
|
|
|
||
|
|
if input == "ALL"
|
||
|
|
admins = Admin.all.to_a
|
||
|
|
else
|
||
|
|
logins = input.split(/,/)
|
||
|
|
logins.each do |login|
|
||
|
|
login = login.strip
|
||
|
|
admin = Admin.find_by(login: login)
|
||
|
|
if admin
|
||
|
|
admins << admin
|
||
|
|
else
|
||
|
|
invalid_logins << login
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
puts
|
||
|
|
puts "Locking..."
|
||
|
|
puts
|
||
|
|
|
||
|
|
failures = []
|
||
|
|
admins.each do |admin|
|
||
|
|
# We do not have an unlock instruction email for admins, but let's be
|
||
|
|
# cautious. If we ever add one, we do not want to send it when we do this.
|
||
|
|
if admin.lock_access!({ send_instructions: false })
|
||
|
|
puts "#{admin.login} has been locked"
|
||
|
|
else
|
||
|
|
failures << admin.login
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
puts
|
||
|
|
puts "Locking complete!"
|
||
|
|
puts "Could not find: #{invalid_logins.join(', ')}" unless invalid_logins.empty?
|
||
|
|
puts "Could not lock: #{failures.join(', ')}" unless failures.empty?
|