module AuthTrail
Constants
- VERSION
Attributes
exclude_method[RW]
geocode[RW]
identity_method[RW]
job_queue[RW]
track_method[RW]
transform_method[RW]
Public Class Methods
safely(default: nil) { || ... }
click to toggle source
# File lib/authtrail.rb, line 61 def self.safely(default: nil) begin yield rescue => e warn "[authtrail] #{e.class.name}: #{e.message}" default end end
track(strategy:, scope:, identity:, success:, request:, user: nil, failure_reason: nil)
click to toggle source
# File lib/authtrail.rb, line 23 def self.track(strategy:, scope:, identity:, success:, request:, user: nil, failure_reason: nil) data = { strategy: strategy, scope: scope, identity: identity, success: success, failure_reason: failure_reason, user: user, ip: request.remote_ip, user_agent: request.user_agent, referrer: request.referrer } if request.params[:controller] data[:context] = "#{request.params[:controller]}##{request.params[:action]}" end # add request data before exclude_method since exclude_method doesn't have access to request # could also add 2nd argument to exclude_method when arity > 1 AuthTrail.transform_method.call(data, request) if AuthTrail.transform_method # if exclude_method throws an exception, default to not excluding exclude = AuthTrail.exclude_method && AuthTrail.safely(default: false) { AuthTrail.exclude_method.call(data) } unless exclude if AuthTrail.track_method AuthTrail.track_method.call(data) else login_activity = LoginActivity.new data.each do |k, v| login_activity.try("#{k}=", v) end login_activity.save! AuthTrail::GeocodeJob.perform_later(login_activity) if AuthTrail.geocode end end end