From 2f52310d464e3fd3b3381c780869f0179dc475b5 Mon Sep 17 00:00:00 2001 From: farhatahmad <35435341+farhatahmad@users.noreply.github.com> Date: Wed, 31 Jul 2019 11:36:38 -0400 Subject: [PATCH] Create a rake task to create users (#708) --- lib/tasks/administrator.rake | 26 +---------------- lib/tasks/user.rake | 55 ++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 25 deletions(-) create mode 100644 lib/tasks/user.rake diff --git a/lib/tasks/administrator.rake b/lib/tasks/administrator.rake index e13825f2..0a98723d 100644 --- a/lib/tasks/administrator.rake +++ b/lib/tasks/administrator.rake @@ -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 diff --git a/lib/tasks/user.rake b/lib/tasks/user.rake new file mode 100644 index 00000000..d89e402e --- /dev/null +++ b/lib/tasks/user.rake @@ -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