refactor: Restructure authentication into separate actions

This commit is contained in:
2026-03-27 13:10:22 -07:00
parent cbd552e3fd
commit 36d7b311f7
2 changed files with 0 additions and 102 deletions
-63
View File
@@ -1,63 +0,0 @@
# frozen_string_literal: true
module EuchreCamp
module Actions
module Auth
class Login < EuchreCamp::Action
include Deps[
users_repo: 'repositories.users',
players_repo: 'repositories.players'
]
# Show login form (GET)
class Show < Login
def handle(request, response)
render_with_player(request, response)
end
end
# Process login (POST)
class Create < Login
def handle(request, response)
email = request.params[:email]
password = request.params[:password]
user = users_repo.by_email(email)
if user && valid_password?(user, password)
if user.locked?
response.flash[:error] = 'Account is locked. Please contact support.'
response.redirect_to '/login'
return
end
# Record successful login
ip_address = request.env['REMOTE_ADDR']
users_repo.record_login(user[:id], ip_address)
# Create session
session = request.session
session[:user_id] = user[:id]
session[:player_id] = user[:player_id]
response.flash[:success] = 'Welcome back!'
response.redirect_to '/rankings'
else
# Record failed login
users_repo.record_failed_login(user[:id]) if user
response.flash[:error] = 'Invalid email or password'
response.redirect_to '/login'
end
end
private
def valid_password?(user, password)
BCrypt::Password.new(user[:password_digest]) == password
end
end
end
end
end
end