module Sso module Warden module Hooks class BeforeLogout include ::Sso::Logging attr_reader :user, :warden, :options delegate :request, to: :warden delegate :params, to: :request delegate :session, to: :request def self.to_proc proc do |user, warden, options| new(user: user, warden: warden, options: options).call end end def initialize(user:, warden:, options:) @user, @warden, @options = user, warden, options end def call # Only run if user is logged in if warden.authenticated?(:user) && (session = warden.session(:user)) debug { 'Destroy all Sso::Session groups before logout' } debug { session.inspect } Sso::Session.logout(session["sso_session_id"]) #Passports.logout passport_id: params['passport_id'], provider_passport_id: session['sso_session_id'] end end end end end end