Module: Devise::Models::CasAuthenticatable::ClassMethods
- Defined in:
- lib/devise_cas_authenticatable/model.rb
Instance Method Summary collapse
-
#authenticate_with_cas_ticket(ticket) ⇒ Object
Authenticate a CAS ticket and return the resulting user object.
Instance Method Details
#authenticate_with_cas_ticket(ticket) ⇒ Object
Authenticate a CAS ticket and return the resulting user object. Behavior is as follows:
-
Check ticket validity using RubyCAS::Client. Return nil if the ticket is invalid.
-
Find a matching user by username (will use find_for_authentication if available).
-
If the user does not exist, but Devise.cas_create_user is set, attempt to create the user object in the database. If cas_extra_attributes= is defined, this will also pass in the ticket’s extra_attributes hash.
-
Return the resulting user object.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/devise_cas_authenticatable/model.rb', line 18 def authenticate_with_cas_ticket(ticket) ::Devise.cas_client.validate_service_ticket(ticket) unless ticket.has_been_validated? if ticket.is_valid? conditions = {::Devise.cas_username_column => ticket.respond_to?(:user) ? ticket.user : ticket.response.user} # We don't want to override Devise 1.1's find_for_authentication resource = if respond_to?(:find_for_authentication) find_for_authentication(conditions) else find(:first, :conditions => conditions) end resource = new(conditions) if (resource.nil? and should_create_cas_users?) return nil unless resource if resource.respond_to? :cas_extra_attributes= resource.cas_extra_attributes = ticket.respond_to?(:extra_attributes) ? ticket.extra_attributes : ticket.response.extra_attributes end resource.save resource end end |