class CASRequest
Attributes
request[R]
Public Class Methods
new(request)
click to toggle source
# File lib/rack-cas/cas_request.rb, line 6 def initialize(request) @request = request end
Public Instance Methods
logout?()
click to toggle source
# File lib/rack-cas/cas_request.rb, line 22 def logout? @request.path_info == '/logout' end
path_matches?(strings_or_regexps)
click to toggle source
# File lib/rack-cas/cas_request.rb, line 38 def path_matches?(strings_or_regexps) Array(strings_or_regexps).any? do |matcher| if matcher.is_a? Regexp !!(@request.path_info =~ matcher) elsif matcher.to_s != '' @request.path_info[0...matcher.to_s.length] == matcher.to_s end end end
service_url()
click to toggle source
# File lib/rack-cas/cas_request.rb, line 18 def service_url RackCAS::URL.parse(@request.url).remove_param('ticket').to_s end
single_sign_out?()
click to toggle source
# File lib/rack-cas/cas_request.rb, line 26 def single_sign_out? !!@request.params['logoutRequest'] end
ticket()
click to toggle source
# File lib/rack-cas/cas_request.rb, line 10 def ticket @ticket ||= if single_sign_out? sso_ticket elsif ticket_validation? ticket_param end end
ticket_validation?()
click to toggle source
# File lib/rack-cas/cas_request.rb, line 30 def ticket_validation? # The CAS protocol specifies that services must support tickets of # *up to* 32 characters in length (including ST-), and recommendes # that services accept tickets up to 256 characters long. # http://www.jasig.org/cas/protocol !!(@request.get? && ticket_param && ticket_param.to_s =~ /\AST\-[^\s]{1,253}\Z/) end
Private Instance Methods
sso_ticket()
click to toggle source
# File lib/rack-cas/cas_request.rb, line 54 def sso_ticket xml = Nokogiri::XML(@request.params['logoutRequest']) node = xml.root.children.find { |c| c.name =~ /SessionIndex/i } node.text unless node.nil? end
ticket_param()
click to toggle source
# File lib/rack-cas/cas_request.rb, line 50 def ticket_param @request.params['ticket'] end