Create a rake task to create users (#708)

This commit is contained in:
farhatahmad 2019-07-31 11:36:38 -04:00 committed by Jesus Federico
parent e0afcdec23
commit 2f52310d46
2 changed files with 56 additions and 25 deletions

View File

@ -5,30 +5,6 @@ require 'bigbluebutton_api'
namespace :admin do
desc "Creates an administrator account"
task :create, [:name, :email, :password, :role] => :environment do |_task, args|
u = {
name: args[:name] || 'Administrator',
password: args[:password] || Rails.configuration.admin_password_default,
email: args[:email] || 'admin@example.com',
}
u[:email].prepend "superadmin-" if args[:role] == "super_admin"
admin = User.find_by(email: u[:email])
# Create administrator account if it doesn't exist
unless admin
admin = User.create(name: u[:name], email: u[:email], password: u[:password],
password_confirmation: u[:password], provider: 'greenlight', email_verified: true)
if args[:role] == "super_admin"
admin.remove_role(:user)
admin.add_role(:super_admin)
else
admin.add_role(:admin)
end
end
puts "Administrator account succesfully created."
puts "Email: #{u[:email]}"
puts "Password: #{u[:password]}"
puts "PLEASE CHANGE YOUR PASSWORD IMMEDIATELY" if u[:password] == Rails.configuration.admin_password_default
Rake::Task["user:create"].invoke(args[:name], args[:email], args[:password], "admin")
end
end

55
lib/tasks/user.rake Normal file
View File

@ -0,0 +1,55 @@
# frozen_string_literal: true
require 'bigbluebutton_api'
namespace :user do
desc "Creates a user account"
task :create, [:name, :email, :password, :role] => :environment do |_task, args|
u = {
name: args[:name],
password: args[:password],
email: args[:email],
role: args[:role] || "user"
}
if u[:role] == "admin"
# Set default variables
u[:name] = "Administrator" if u[:name].blank?
u[:password] = Rails.configuration.admin_password_default if u[:password].blank?
u[:email] = "admin@example.com" if u[:email].blank?
elsif u[:name].blank? || u[:password].blank? || u[:email].blank?
# Check that all fields exist
puts "Missing Arguments"
exit
end
u[:email].prepend "superadmin-" if args[:role] == "super_admin"
# Create account if it doesn't exist
if !User.exists?(email: u[:email])
user = User.create(name: u[:name], email: u[:email], password: u[:password],
provider: 'greenlight', email_verified: true)
unless user.valid?
puts "Invalid Arguments"
puts user.errors.messages
exit
end
if u[:role] == "super_admin"
user.remove_role(:user)
user.add_role(:super_admin)
elsif u[:role] == "admin"
user.add_role(:admin)
end
puts "Account succesfully created."
puts "Email: #{u[:email]}"
puts "Password: #{u[:password]}"
puts "Role: #{u[:role]}"
puts "PLEASE CHANGE YOUR PASSWORD IMMEDIATELY" if u[:password] == Rails.configuration.admin_password_default
else
puts "Account with that email already exists"
puts "Email: #{u[:email]}"
end
end
end