Sha256: 4c29abc108559c8008e23bd1dd75b6903ae7730c7e5734c9fe29af6cc7fd5ec4
Contents?: true
Size: 1.71 KB
Versions: 3
Compression:
Stored size: 1.71 KB
Contents
module Devise module Models # Extends your User class with support for CAS ticket authentication. module CasAuthenticatable def self.included(base) base.extend ClassMethods end module ClassMethods # 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. def authenticate_with_cas_ticket(ticket) ::Devise.cas_client.validate_service_ticket(ticket) unless ticket.has_been_validated? if ticket.is_valid? conditions = {:username => 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 ::Devise.cas_create_user?) return nil unless resource resource.cas_extra_attributes = ticket.response.extra_attributes if resource.respond_to? :cas_extra_attributes= resource.save resource end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems