Files
openfoodnetwork/db/default/users.rb

76 lines
2.1 KiB
Ruby

require 'highline/import'
# see last line where we create an admin if there is none, asking for email and password
def prompt_for_admin_password
if ENV['ADMIN_PASSWORD']
password = ENV['ADMIN_PASSWORD'].dup
say "Admin Password #{password}"
else
password = ask('Password [ofn123]: ') do |q|
q.echo = false
q.validate = /^(|.{5,40})$/
q.responses[:not_valid] = 'Invalid password. Must be at least 5 characters long.'
q.whitespace = :strip
end
password = 'ofn123' if password.blank?
end
password
end
def prompt_for_admin_email
if ENV['ADMIN_EMAIL']
email = ENV['ADMIN_EMAIL'].dup
say "Admin User #{email}"
else
email = ask('Email [ofn@example.com]: ') do |q|
q.echo = true
q.whitespace = :strip
end
email = 'ofn@example.com' if email.blank?
end
email
end
def create_admin_user
if ENV.fetch("AUTO_ACCEPT", true)
password = ENV.fetch("ADMIN_PASSWORD", "ofn123").dup
email = ENV.fetch("ADMIN_EMAIL", "ofn@example.com").dup
else
puts 'Create the admin user (press enter for defaults).'
#name = prompt_for_admin_name unless name
email = prompt_for_admin_email
password = prompt_for_admin_password
end
attributes = {
:password => password,
:password_confirmation => password,
:email => email,
:login => email
}
load 'spree/user.rb'
if Spree::User.find_by_email(email)
say "\nWARNING: There is already a user with the email: #{email}, so no account changes were made. If you wish to create an additional admin user, please run rake spree_auth:admin:create again with a different email.\n\n"
else
admin = Spree::User.new(attributes)
admin.skip_confirmation!
admin.skip_confirmation_notification!
if admin.save
role = Spree::Role.find_or_create_by_name 'admin'
admin.spree_roles << role
admin.save
say "Done!"
else
say "There was some problems with persisting new admin user:"
admin.errors.full_messages.each do |error|
say error
end
end
end
end
create_admin_user if Spree::User.admin.empty?