Sha256: 2c911d09a04c10c281b3e6911d2478b81879fc9b18dbaf97bf400bb3996b5ec4

Contents?: true

Size: 1.96 KB

Versions: 14

Compression:

Stored size: 1.96 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.after_set_user do |user, warden, opts|
        if EffectiveLogging.sign_in_enabled && !EffectiveLogging.supressed?
          if (opts[:event] == :set_user rescue false) # User has just reset their password and signed in
            ::EffectiveLogger.sign_in('Sign in',
              user: user,
              associated: user,
              request: warden.request,
              notes: 'after password reset'
            )
          end
        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

14 entries across 14 versions & 1 rubygems

Version Path
effective_logging-2.0.5 lib/effective_logging/user_logger.rb
effective_logging-2.0.4 lib/effective_logging/user_logger.rb
effective_logging-2.0.3 lib/effective_logging/user_logger.rb
effective_logging-2.0.2 lib/effective_logging/user_logger.rb
effective_logging-2.0.1 lib/effective_logging/user_logger.rb
effective_logging-2.0.0 lib/effective_logging/user_logger.rb
effective_logging-1.11.5 lib/effective_logging/user_logger.rb
effective_logging-1.11.4 lib/effective_logging/user_logger.rb
effective_logging-1.11.3 lib/effective_logging/user_logger.rb
effective_logging-1.11.2 lib/effective_logging/user_logger.rb
effective_logging-1.11.1 lib/effective_logging/user_logger.rb
effective_logging-1.11.0 lib/effective_logging/user_logger.rb
effective_logging-1.10.18 lib/effective_logging/user_logger.rb
effective_logging-1.10.17 lib/effective_logging/user_logger.rb