Initial commit
This commit is contained in:
52
lib/tasks/superadmin.rake
Normal file
52
lib/tasks/superadmin.rake
Normal file
@@ -0,0 +1,52 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
namespace :superadmin do
|
||||
desc "create superadmin"
|
||||
task create: :environment do
|
||||
Kernel.puts "Seeding superadmin"
|
||||
Barong::Seed.new().seeds["superadmin"]&.each do |seed|
|
||||
Kernel.puts "---"
|
||||
raise ConfigError.new("Email missing in users seed") if seed["email"].to_s.empty?
|
||||
raise ConfigError.new("Level is missing for user #{seed["email"]}") unless seed["level"].is_a?(Integer)
|
||||
|
||||
# Skip existing users
|
||||
if User.find_by(email: seed["email"], state: seed['state']).present?
|
||||
Kernel.puts "User '#{seed['email']}' already exists"
|
||||
next
|
||||
elsif User.find_by(email: seed["email"]).present?
|
||||
User.find_by(email: seed["email"]).update(state: seed['state'])
|
||||
next
|
||||
end
|
||||
|
||||
user = User.new(seed)
|
||||
user.password ||= SecureRandom.base64(30)
|
||||
|
||||
if user.save
|
||||
Kernel.puts "Created user for '#{user.email}'"
|
||||
|
||||
# Set correct level with labels
|
||||
# levels = Level.where(id: 1..user.level)
|
||||
levels = Level.where(id: 1..Level::LEVEL_ID_BOUNDS[user.level.to_s])
|
||||
raise ConfigError.new("No enough levels found in database to grant the user to level #{user.level}") if levels.count < user.level
|
||||
|
||||
levels.find_each do |level|
|
||||
user.labels.create(key: level.key, value: level.value, scope: 'private')
|
||||
end
|
||||
|
||||
else
|
||||
Kernel.puts "Can't create user '#{user.email}': #{user.errors.full_messages.join('; ')}"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
task delete: :environment do
|
||||
Kernel.puts "deleting superadmin"
|
||||
Barong::Seed.new().seeds["superadmin"]&.each do |seed|
|
||||
user = User.find_by(email: seed['email'])
|
||||
user.update(state: 'inactive')
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user