#!/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"