From 7d690d3d6b53456fe1498111125508ec2b3cac72 Mon Sep 17 00:00:00 2001 From: Toastyyy3 <140434113+Toastyyy3@users.noreply.github.com> Date: Fri, 7 Feb 2025 18:52:22 +0100 Subject: [PATCH] Implement logging of failed login attempts --- app/controllers/auth/sessions_controller.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/controllers/auth/sessions_controller.rb b/app/controllers/auth/sessions_controller.rb index 250573fc7d..4281288da3 100644 --- a/app/controllers/auth/sessions_controller.rb +++ b/app/controllers/auth/sessions_controller.rb @@ -21,6 +21,11 @@ class Auth::SessionsController < Devise::SessionsController end def create + user = warden.authenticate(scope: :user) + unless user + log_failed_authentication(email) + end + super do |resource| # We only need to call this if this hasn't already been # called from one of the two-factor or sign-in token @@ -184,6 +189,12 @@ class Auth::SessionsController < Devise::SessionsController UserMailer.failed_2fa(user, request.remote_ip, request.user_agent, Time.now.utc).deliver_later! end + def log_failed_authentication(user) + ip_address = request.remote_ip + auth_logger = Logger.new(Rails.root.join('log', 'authentication.log')) + auth_logger.warn("Failed login attempt for user: #{user || 'Unknown'}, IP: #{ip_address}") + end + def second_factor_attempts_key(user) "2fa_auth_attempts:#{user.id}:#{Time.now.utc.hour}" end