module Sinatra::CasHelper
Constants
- CAS_CLIENT
Public Instance Methods
authenticated(model)
click to toggle source
# File lib/sinatra/helpers/cas.rb, line 53 def authenticated(model) raise 500 if session[:cas_user].nil? || session[:cas_user].empty? model.find(:hxt_id => "#{session[:cas_user]}") end
logged_in?(request, session)
click to toggle source
# File lib/sinatra/helpers/cas.rb, line 41 def logged_in?(request, session) session[:cas_ticket] && !session[:cas_ticket].empty? end
need_authentication(request, session)
click to toggle source
# File lib/sinatra/helpers/cas.rb, line 10 def need_authentication(request, session) if session[:cas_ticket] if request[:ticket] && session[:cas_ticket] != request[:ticket] true else false end else true end end
process_cas_login(request, session)
click to toggle source
# File lib/sinatra/helpers/cas.rb, line 22 def process_cas_login(request, session) if request[:ticket] && request[:ticket] != session[:ticket] service_url = read_service_url(request) service_ticket = read_ticket(request[:ticket], service_url) CAS_CLIENT.validate_service_ticket(service_ticket) if service_ticket.success session[:cas_ticket] = service_ticket.ticket session[:cas_user] = service_ticket.user else redirect request.path_info #raise "Service Ticket validation failed! #{st.failure_code} - #{st.failure_message}" end end end
Private Instance Methods
logout_cas(request, session)
click to toggle source
# File lib/sinatra/helpers/cas.rb, line 81 def logout_cas(request, session) if logged_in?(request, session) url = CAS_CLIENT.logout_url() session.clear str = request.referer || '' comeback = "=" + (str.include?("?")? str.slice(0..(str.index('?')-1)) : str) #Hack mal! redirect url + (url.include?("?service")? "" : "?service") + comeback end end
read_service_url(request)
click to toggle source
# File lib/sinatra/helpers/cas.rb, line 69 def read_service_url(request) service_url = url(request.path_info) if request.GET params = request.GET.dup params.delete(:ticket) if params [service_url, Rack::Utils.build_nested_query(params)].join('?') end end return service_url end
read_ticket(ticket_str, service_url)
click to toggle source
# File lib/sinatra/helpers/cas.rb, line 59 def read_ticket(ticket_str, service_url) return nil unless ticket_str and !ticket_str.empty? if ticket_str =~ /^PT-/ CASClient::ProxyTicket.new(ticket_str, service_url) else CASClient::ServiceTicket.new(ticket_str, service_url) end end