Sha256: a0448bcc50ba907677d392ebdbac721635f090503df9b44cebdf084eab495c76

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

module AuthTrail
  module Manager
    class << self
      def after_set_user(user, auth, opts)
        # do not raise an exception for tracking
        AuthTrail.safely do
          request = ActionDispatch::Request.new(auth.env)

          AuthTrail.track(
            strategy: detect_strategy(auth),
            scope: opts[:scope].to_s,
            identity: AuthTrail.identity_method.call(request, opts, user),
            success: true,
            request: request,
            user: user
          )
        end
      end

      def before_failure(env, opts)
        AuthTrail.safely do
          request = ActionDispatch::Request.new(env)

          AuthTrail.track(
            strategy: detect_strategy(env["warden"]),
            scope: opts[:scope].to_s,
            identity: AuthTrail.identity_method.call(request, opts, nil),
            success: false,
            request: request,
            failure_reason: opts[:message].to_s
          )
        end
      end

      private

      def detect_strategy(auth)
        strategy = auth.env["omniauth.auth"]["provider"] if auth.env["omniauth.auth"]
        strategy ||= auth.winning_strategy.class.name.split("::").last.underscore if auth.winning_strategy
        strategy ||= "database_authenticatable"
        strategy
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
authtrail-0.2.2 lib/auth_trail/manager.rb
authtrail-0.2.1 lib/auth_trail/manager.rb