Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace :admin do
- desc 'Create admin user'
- task create: :environment do
- require 'highline/import'
- class User
- def reset_password
- begin
- password = ask('Password: ') { |q| q.echo = 'x' }
- password_confirmation = ask('Repeat password: ') { |q| q.echo = 'x' }
- end while password != password_confirmation
- self.password = password
- self.password_confirmation = password
- end
- end
- begin
- email = ask('Email: ')
- existing_user = User.find_by_email(email)
- # check if user account already exists
- if existing_user
- user = existing_user
- # user already exists, ask for password reset
- reset_password = ask('User with this email already exists! Do you want to reset the password for this email? (Y/n) ')
- user.reset_password if yes?(reset_password)
- else
- # create new user otherwise
- user = User.new(email: email, confirmed_at: Time.current)
- user.reset_password
- end
- saved = user.save
- if !saved
- puts admin.errors.full_messages.join("\n")
- next
- end
- grant_admin = ask('Do you want to grant Admin privileges to this account? (Y/n) ')
- if yes?(grant_admin)
- user.role = :admin
- say("\nYour account now has Admin privileges!") if user.save
- end
- end while !saved
- end
- end
- def yes?(string)
- string = string.strip.downcase
- string.empty? || string == 'y' || string == 'yes'
- end
Add Comment
Please, Sign In to add comment