Guest

Untitled

By: a guest on Jan 28th, 2012  |  syntax: None  |  size: 1.00 KB  |  hits: 33  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. ## merb/filter.rb
  2.  
  3. def force_cas_check
  4.   @client ||= CASClient::Client.new(config)
  5.  
  6.   service_ticket = read_ticket(self)
  7.  
  8.   cas_login_url = client.add_service_to_login_url(read_service_url(self))
  9.  
  10.   if service_ticket
  11.  
  12.     client.validate_service_ticket(service_ticket) unless service_ticket.has_been_validated?
  13.  
  14.     validation_response = service_ticket.response
  15.    
  16.     if service_ticket.is_valid?
  17.      
  18.       session[client.username_session_key] = validation_response.user
  19.       session[client.extra_attributes_session_key] = validation_response.extra_attributes
  20.      
  21.       session[:cas_last_valid_ticket] = service_ticket
  22.       return true
  23.     else  
  24.       redirect cas_login_url
  25.       return false
  26.     end
  27.   else
  28.     log.warn("No ticket -- redirecting to #{cas_login_url}")
  29.     redirect cas_login_url
  30.     return false
  31.   end
  32. end
  33.  
  34. ## One of my controllers.rb
  35.  
  36. include CASClient::Frameworks::Merb::Filter
  37. before :force_cas_check, :only => ["index"]
  38.  
  39. def index
  40.   render
  41. end