identity-vault/db/seeds.rb
2026-01-20 23:12:35 -05:00

73 lines
1.9 KiB
Ruby

# frozen_string_literal: true
# Seeds for local development
# Run with: bin/rails db:seed
return unless Rails.env.development?
puts "🌱 seeding development data..."
# Create a test identity
identity = Identity.find_or_initialize_by(primary_email: "identity@hackclub.com")
if identity.new_record?
identity.assign_attributes(
first_name: "Dev",
last_name: "User",
birthday: Date.new(2000, 1, 1),
country: :US
)
identity.save!
puts " created identity: #{identity.primary_email}"
else
puts " identity already exists: #{identity.primary_email}"
end
# Create or find a verified TOTP for backend access
totp = identity.totps.verified.first || identity.totps.find_by(aasm_state: "unverified")
if totp.nil?
totp = identity.totps.create!(aasm_state: "verified")
puts " created TOTP for 2FA"
elsif totp.aasm_state != "verified"
totp.update!(aasm_state: "verified")
puts " verified existing TOTP"
else
puts " TOTP already exists and verified"
end
# Create backend user with super admin
backend_user = identity.backend_user || identity.build_backend_user
if backend_user.new_record?
backend_user.assign_attributes(
username: "dev",
active: true,
super_admin: true
)
backend_user.save!
puts " created backend user with super_admin"
else
puts " backend user already exists"
end
puts ""
puts "=" * 60
puts "dev account ready!"
puts "=" * 60
puts ""
puts " email: identity@hackclub.com"
puts " totp secret: #{totp.secret}"
puts ""
puts "add this secret to your authenticator app, or use this URI:"
puts ""
puts " #{totp.provisioning_uri}"
puts ""
puts "login flow:"
puts " 1. go to http://localhost:3000/login"
puts " 2. enter: identity@hackclub.com"
puts " 3. grab the code from http://localhost:3000/letter_opener"
puts " 4. enter the TOTP code from your authenticator"
puts " 5. go to http://localhost:3000/backend"
puts ""
puts "=" * 60