Class: Cassette::Rubycas::SingleSignOutConstraint

Inherits:
Object
  • Object
show all
Defined in:
lib/cassette/rubycas/single_sign_out_constraint.rb

Direct Known Subclasses

NotSingleSignOutConstraint

Instance Method Summary collapse

Instance Method Details

#matches?(request) ⇒ Boolean

Returns:

  • (Boolean)


6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/cassette/rubycas/single_sign_out_constraint.rb', line 6

def matches?(request)
  if (content_type = request.headers['CONTENT_TYPE']) &&
     content_type =~ /^multipart\//
    return false
  end

  if request.post? &&
     request.request_parameters['logoutRequest'] &&
     [request.request_parameters['logoutRequest'],
      URI.unescape(request.request_parameters['logoutRequest'])]
     .find { |xml| xml =~ /^<samlp:LogoutRequest.*?<samlp:SessionIndex>(.*)<\/samlp:SessionIndex>/m }

    Cassette.logger.debug "Intercepted a single sign out request on #{request}"
    return true
  end

  false
end