Update admin rake task

This commit is contained in:
Arpit Jalan 2014-07-02 02:03:02 +05:30
parent 7f817526c6
commit cd07bf5611

View File

@ -1,24 +1,59 @@
desc "Creates a forum administrator" desc "Creates a forum administrator"
task "admin:create" => :environment do task "admin:create" => :environment do
require 'highline/import' require 'highline/import'
begin begin
admin = User.new email = ask("Email:")
admin.email = ask("Email:") existing_user = User.find_by_email(email)
admin.username = "admin"
begin # check if user account already exixts
password = ask("Password:") {|q| q.echo = false} if !existing_user.nil?
password_confirmation = ask("Repeat password:") {|q| q.echo = false} # user already exists, ask for password reset
end while password != password_confirmation admin = existing_user
admin.password = password reset_password = ask("User with this email already exists! Do you want to reset the password for this email? Type 'Y' for Yes, 'N' for No.")
# admin.email_confirmed = true if (reset_password.downcase == 'y')
begin
password = ask("Password:") {|q| q.echo = false}
password_confirmation = ask("Repeat password:") {|q| q.echo = false}
end while password != password_confirmation
admin.password = password
end
else
# create new user
admin = User.new
admin.email = email
username_random = Random.new()
admin.username = "admin_#{username_random.rand(9999)}"
begin
password = ask("Password:") {|q| q.echo = false}
password_confirmation = ask("Repeat password:") {|q| q.echo = false}
end while password != password_confirmation
admin.password = password
end
# save/update user account
saved = admin.save saved = admin.save
if !saved if !saved
puts admin.errors.full_messages.join("\n") puts admin.errors.full_messages.join("\n")
next next
end end
end while !saved end while !saved
admin.grant_admin!
admin.change_trust_level!(TrustLevel.levels.max_by{|k, v| v}[0]) if !existing_user.nil?
admin.email_tokens.update_all confirmed: true say("\nAccount updated successfully!")
admin.activate else
say("\nAccount created successfully with username #{admin.username}")
end
# grant admin privileges
reset_password = ask("Do you want to grant Admin privileges to this account? Type 'Y' for Yes, 'N' for No.")
if (reset_password.downcase == 'y')
admin.grant_admin!
admin.change_trust_level!(TrustLevel.levels.max_by{|k, v| v}[0])
admin.email_tokens.update_all confirmed: true
admin.activate
say("\nYour account now has Admin privileges!")
end
end end