Files
euchre_camp/app/action.rb
T
david e7ddd0f72f 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
2026-03-27 12:25:08 -07:00

48 lines
1.2 KiB
Ruby

# auto_register: false
# frozen_string_literal: true
require "hanami/action"
module EuchreCamp
class Action < Hanami::Action
include Deps[users_repo: 'repositories.users', players_repo: 'repositories.players']
protected
# Get current user from session
def current_user(request)
user_id = request.session[:user_id]
return nil unless user_id
users_repo.by_id(user_id)
end
# Get current player from session
def current_player(request)
player_id = request.session[:player_id]
return nil unless player_id
players_repo.by_id(player_id)
end
# Check if user is logged in
def logged_in?(request)
!request.session[:user_id].nil?
end
# Require authentication - redirect to login if not logged in
def require_authentication(request, response)
unless logged_in?(request)
response.flash[:error] = 'Please login to continue'
response.redirect_to '/login'
end
end
# Helper to pass current_player to view
def render_with_player(request, response, **options)
player = current_player(request)
response.render(view, current_player: player, **options)
end
end
end