60 lines
1.4 KiB
Ruby
Executable File
60 lines
1.4 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
# frozen_string_literal: true
|
|
|
|
require_relative '../config/app'
|
|
require 'hanami/prepare'
|
|
require 'bcrypt'
|
|
|
|
# Get arguments
|
|
email = ARGV[0] || 'david@dhg.lol'
|
|
password = ARGV[1] || 'admin'
|
|
|
|
if password.nil?
|
|
puts "Error: Password required"
|
|
puts "Usage: ruby scripts/create_admin.rb [email] [password]"
|
|
exit 1
|
|
end
|
|
|
|
puts "Creating admin user..."
|
|
puts "Email: #{email}"
|
|
|
|
# Initialize repositories
|
|
players_repo = EuchreCamp::App['repositories.players']
|
|
users_repo = EuchreCamp::App['repositories.users']
|
|
|
|
# Check if user already exists
|
|
existing_user = users_repo.by_email(email)
|
|
if existing_user
|
|
puts "User #{email} already exists with ID #{existing_user.id}"
|
|
puts "Updating role to club_admin..."
|
|
users_repo.users.where(id: existing_user.id).update(role: 'club_admin', confirmed: true)
|
|
puts "Done!"
|
|
exit 0
|
|
end
|
|
|
|
# Create player
|
|
player = players_repo.create(name: email.split('@').first.capitalize, rating: 1000)
|
|
puts "Created player with ID: #{player[:id]}"
|
|
|
|
# Hash password
|
|
password_digest = BCrypt::Password.create(password)
|
|
puts "Password hashed"
|
|
|
|
# Create user
|
|
user = users_repo.create(
|
|
email: email,
|
|
password_digest: password_digest,
|
|
player_id: player[:id],
|
|
role: 'club_admin',
|
|
confirmed: true
|
|
)
|
|
|
|
puts ""
|
|
puts "✅ Admin user created successfully!"
|
|
puts " Email: #{email}"
|
|
puts " Player ID: #{player[:id]}"
|
|
puts " Role: club_admin"
|
|
puts " Confirmed: true"
|
|
puts ""
|
|
puts "Login at: http://localhost:2300/login"
|