feat(auth): implement authentication system foundation
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
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user