e7ddd0f72f
Add user authentication infrastructure with login/logout functionality, session management, and basic user model. Changes: - Create users table with email, password_digest, confirmation tokens - Add Users repository with authentication methods - Add User entity with authentication helpers - Implement login form and authentication actions - Add logout action - Add BCrypt gem for password hashing - Update base Action class with authentication helpers - Add login/logout routes Next steps: Registration flow, password reset, email confirmation
28 lines
981 B
Ruby
28 lines
981 B
Ruby
# frozen_string_literal: true
|
|
|
|
ROM::SQL.migration do
|
|
change do
|
|
create_table :users do
|
|
primary_key :id
|
|
foreign_key :player_id, :players, null: false
|
|
column :email, String, null: false, unique: true
|
|
column :password_digest, String, null: false
|
|
column :confirmed, Boolean, default: false
|
|
column :confirmation_token, String
|
|
column :confirmation_sent_at, DateTime
|
|
column :reset_password_token, String
|
|
column :reset_password_sent_at, DateTime
|
|
column :failed_login_attempts, Integer, default: 0
|
|
column :locked_until, DateTime
|
|
column :last_login_at, DateTime
|
|
column :last_login_ip, String
|
|
column :created_at, DateTime, null: false, default: Sequel::CURRENT_TIMESTAMP
|
|
column :updated_at, DateTime, null: false, default: Sequel::CURRENT_TIMESTAMP
|
|
end
|
|
|
|
add_index :users, :email, unique: true
|
|
add_index :users, :confirmation_token
|
|
add_index :users, :reset_password_token
|
|
end
|
|
end
|