Base
Try to authenticate a user using the CAS ticket passed in params. If the ticket is valid and the model's authenticate_with_cas_ticket method returns a user, then return success. If the ticket is invalid, then either fail (if we're just returning from the CAS server, based on the referrer) or attempt to redirect to the CAS server's login URL.
# File lib/devise_cas_authenticatable/strategy.rb, line 16 def authenticate! ticket = read_ticket(params) if ticket if resource = mapping.to.authenticate_with_cas_ticket(ticket) # Store the ticket in the session for later usage if ::Devise.cas_enable_single_sign_out session['cas_last_valid_ticket'] = ticket.ticket session['cas_last_valid_ticket_store'] = true end success!(resource) elsif ticket.is_valid? username = ticket.respond_to?(:user) ? ticket.user : ticket.response.user redirect!(::Devise.cas_unregistered_url(request.url, mapping), :username => username) #fail!("The user #{ticket.response.user} is not registered with this site. Please use a different account.") else fail!(:invalid) end else fail!(:invalid) end end
# File lib/devise_cas_authenticatable/strategy.rb, line 41 def read_ticket(params) ticket = params[:ticket] return nil unless ticket service_url = ::Devise.cas_service_url(request.url, mapping) if ticket =~ /^PT-/ ::CASClient::ProxyTicket.new(ticket, service_url, params[:renew]) else ::CASClient::ServiceTicket.new(ticket, service_url, params[:renew]) end end
Generated with the Darkfish Rdoc Generator 2.