Sha256: 8fad1484c7c7aa82f8ab12e2cb59b81488147e18df29b0a30397b7fa796105f6

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 KB

Contents

module Sso
  module Warden
    module Hooks
      class SessionCheck
        include ::Sso::Logging

        attr_reader :user, :warden, :options
        delegate :request, to: :warden
        delegate :params, to: :request

        def self.to_proc
          proc do |user, warden, options|
            new(user, warden, options).call
          end
        end

        def initialize(user, warden, options)
          @user, @warden, @options = user, warden, options
        end

        def call
          debug { "Starting hook after user is fetched into the session" }

          # Infinite loop with BeforeLogout - before logout runs this too
          unless logged_in? && Sso::Session.find_by_id(session["sso_session_id"]).try(:active?)
            warden.logout(scope)
            throw(:warden, :scope => scope, :reason => "Sso::Session INACTIVE")
          end
        end

        def scope
          scope = options[:scope]
        end

        def session
          warden.session(scope)
        end

        def logged_in?
          warden.authenticated?(scope) && session && user
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
doorkeeper_sso-0.2.3 lib/sso/warden/hooks/session_check.rb
doorkeeper_sso-0.2.2 lib/sso/warden/hooks/session_check.rb