canvas-lms/lib/tasks/db_create_data.rake

88 lines
2.0 KiB
Ruby

# frozen_string_literal: true
namespace :db do
desc "Create a new user"
task :create_user => :environment do
require 'highline/import'
create_user_task
end
end
def create_user_task
shard = nil
account = nil
choose do |menu|
default = nil
Shard.all.each do |e|
default ||= e.name
menu.choice(e.name) do
shard = Shard.find(e.id)
shard.activate!
end
end
menu.default = default
menu.prompt = "Select a Shard: |#{default}| "
end
choose do |menu|
default = nil
Account.all.each do |a|
default = a.name if a.id == 1
menu.choice(a.name) do
account = Account.find(a.id)
end
end
menu.default = default
menu.prompt = "Select an Account: |#{default}| "
end
user_first_name = ask("User's first name: ")
user_last_name = ask("User's last name: ")
user_login = ask("User's login: ")
user_password = ask("User's password: ") { |q| q.default = 'useruser' }
puts %Q{
Shard: #{shard.name}[#{shard.id}]
Account: #{account.name}[#{account.id}]
Admin User: #{user_first_name} #{user_last_name}
Username: #{user_login}
Password: #{user_password}
}
create_user_task unless agree("Does this look correct?") { |q| q.default = 'yes' }
ActiveRecord::Base.transaction do
begin
user = User.create!(
name: user_first_name + " " + user_last_name,
short_name: user_first_name,
sortable_name: user_last_name + " " + user_first_name
)
pseudonym = Pseudonym.create!(
:account => account,
:unique_id => user_login,
:user => user
)
user.register
pseudonym.password = pseudonym.password_confirmation = user_password
pseudonym.save!
puts "User Created!"
rescue => e
puts e
raise ActiveRecord::Rollback
end
puts "Failed to create User!" unless user.persisted?
end
if agree("Would you like to create another user?") { |q| q.default = 'yes' }
create_user_task
else
exit
end
end