Sha256: 33f682917f68e923e3e1311ee86931aaad43e84e7737b909c2c9b23a9d3bed4d

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

module EffectiveLogging
  class UserLogger
    def self.create_warden_hooks
      Warden::Manager.after_authentication do |user, warden, opts|
        if EffectiveLogging.sign_in_enabled && !EffectiveLogging.supressed?
          ::EffectiveLogger.sign_in('Sign in', user: user, associated: user, request: warden.request)
        end
      end

      Warden::Manager.before_logout do |user, warden, opts|
        if EffectiveLogging.sign_out_enabled && !EffectiveLogging.supressed?
          if user.respond_to?(:timedout?) && user.respond_to?(:timeout_in)
            scope = opts[:scope]
            last_request_at = (warden.request.session["warden.#{scope}.#{scope}.session"]['last_request_at'] rescue Time.zone.now)

            # As per Devise
            if last_request_at.is_a? Integer
              last_request_at = Time.at(last_request_at).utc
            elsif last_request_at.is_a? String
              last_request_at = Time.parse(last_request_at)
            end

            if user.timedout?(last_request_at) && !warden.request.env['devise.skip_timeout']
              ::EffectiveLogger.sign_out('Sign out', user: user, associated: user, timedout: true)
            else
              ::EffectiveLogger.sign_out('Sign out', user: user, associated: user)
            end
          else # User does not respond to timedout
            ::EffectiveLogger.sign_out('Sign out', user: user, associated: user)
          end
        end
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
effective_logging-2.0.6 lib/effective_logging/user_logger.rb