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