class Cas::Client::Middleware
Public Class Methods
new(app, &block)
click to toggle source
# File lib/cas/client/middleware.rb, line 6 def initialize(app, &block) @app = app Cas::Client.configure(&block) if block_given? end
Public Instance Methods
call(env)
click to toggle source
# File lib/cas/client/middleware.rb, line 12 def call(env) @request = Rack::Request.new(env) status, headers, rack_body = @app.call(env) if ticket_validation? attributes = server.validate_service(self_url, ticket_param) set_session(attributes) return redirect_to(self_url) elsif status == 401 log(env, "Cas::Client::Middleware detected 401, Status: #{status}, Headers: #{headers}\n") return redirect_to(server.login_url({ service_url: self_url })) else return [status, headers, rack_body] end end
Private Instance Methods
log(env, message, level = :info)
click to toggle source
# File lib/cas/client/middleware.rb, line 61 def log(env, message, level = :info) if env['rack.logger'] env['rack.logger'].send(level, message) else env['rack.errors'].write(message) end end
param_service_ticket?()
click to toggle source
# File lib/cas/client/middleware.rb, line 57 def param_service_ticket? ticket_param.to_s =~ /\AST\-[^\s]{1,253}\Z/ end
redirect_to(url, status=302)
click to toggle source
# File lib/cas/client/middleware.rb, line 41 def redirect_to(url, status=302) [ status, { 'Location' => url, 'Content-Type' => 'text/plain' }, ["Redirecting you to #{url}"] ] end
self_url()
click to toggle source
# File lib/cas/client/middleware.rb, line 45 def self_url @request.url.split('?')[0] end
server()
click to toggle source
# File lib/cas/client/middleware.rb, line 32 def server @_server ||= Cas::Client::Server.new end
set_session(attributes)
click to toggle source
# File lib/cas/client/middleware.rb, line 36 def set_session(attributes) attributes[:ticket] = ticket_param @request.session['cas'] = attributes end
ticket_param()
click to toggle source
# File lib/cas/client/middleware.rb, line 53 def ticket_param @request.params['ticket'] end
ticket_validation?()
click to toggle source
# File lib/cas/client/middleware.rb, line 49 def ticket_validation? @request.get? && param_service_ticket? end