
Untitled
By: a guest on Jan 28th, 2012 | syntax:
None | size: 1.00 KB | hits: 33 | expires: Never
## merb/filter.rb
def force_cas_check
@client ||= CASClient::Client.new(config)
service_ticket = read_ticket(self)
cas_login_url = client.add_service_to_login_url(read_service_url(self))
if service_ticket
client.validate_service_ticket(service_ticket) unless service_ticket.has_been_validated?
validation_response = service_ticket.response
if service_ticket.is_valid?
session[client.username_session_key] = validation_response.user
session[client.extra_attributes_session_key] = validation_response.extra_attributes
session[:cas_last_valid_ticket] = service_ticket
return true
else
redirect cas_login_url
return false
end
else
log.warn("No ticket -- redirecting to #{cas_login_url}")
redirect cas_login_url
return false
end
end
## One of my controllers.rb
include CASClient::Frameworks::Merb::Filter
before :force_cas_check, :only => ["index"]
def index
render
end