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