module Authlogic module ActsAsAuthentic # This module is responsible for transitioning existing applications from # the restful_authentication plugin. module RestfulAuthentication def self.included(klass) klass.class_eval do extend Config include InstanceMethods end end # Configures the restful_authentication aspect of acts_as_authentic. # These methods become class methods of ::ActiveRecord::Base. module Config DPR_MSG = <<-STR.squish Support for transitioning to authlogic from restful_authentication (%s) is deprecated without replacement. restful_authentication is no longer used in the ruby community, and the transition away from it is complete. There is only one version of restful_authentication on rubygems.org, it was released in 2009, and it's only compatible with rails 2.3. It has been nine years since it was released. STR # Switching an existing app to Authlogic from restful_authentication? No # problem, just set this true and your users won't know anything # changed. From your database perspective nothing will change at all. # Authlogic will continue to encrypt passwords just like # restful_authentication, so your app won't skip a beat. Although, might # consider transitioning your users to a newer and stronger algorithm. # Checkout the transition_from_restful_authentication option. # # * Default: false # * Accepts: Boolean def act_like_restful_authentication(value = nil) r = rw_config(:act_like_restful_authentication, value, false) set_restful_authentication_config if value r end def act_like_restful_authentication=(value = nil) ::ActiveSupport::Deprecation.warn( format(DPR_MSG, "act_like_restful_authentication="), caller(1) ) act_like_restful_authentication(value) end # This works just like act_like_restful_authentication except that it # will start transitioning your users to the algorithm you specify with # the crypto provider option. The next time they log in it will resave # their password with the new algorithm and any new record will use the # new algorithm as well. Make sure to update your users table if you are # using the default migration since it will set crypted_password and # salt columns to a maximum width of 40 characters which is not enough. def transition_from_restful_authentication(value = nil) r = rw_config(:transition_from_restful_authentication, value, false) set_restful_authentication_config if value r end def transition_from_restful_authentication=(value = nil) ::ActiveSupport::Deprecation.warn( format(DPR_MSG, "transition_from_restful_authentication="), caller(1) ) transition_from_restful_authentication(value) end private def set_restful_authentication_config self.restful_auth_crypto_provider = CryptoProviders::Sha1 if !defined?(::REST_AUTH_SITE_KEY) || ::REST_AUTH_SITE_KEY.nil? unless defined?(::REST_AUTH_SITE_KEY) class_eval("::REST_AUTH_SITE_KEY = ''", __FILE__, __LINE__) end CryptoProviders::Sha1.stretches = 1 end end # @api private def restful_auth_crypto_provider=(provider) if act_like_restful_authentication self.crypto_provider = provider else self.transition_from_crypto_providers = provider end end end # :nodoc: module InstanceMethods private def act_like_restful_authentication? self.class.act_like_restful_authentication == true end def transition_from_restful_authentication? self.class.transition_from_restful_authentication == true end end end end end