lib/authlogic/config.rb
# frozen_string_literal: true
module Authlogic
# Mixed into `Authlogic::ActsAsAuthentic::Base` and
# `Authlogic::Session::Base`.
module Config
E_USE_NORMAL_RAILS_VALIDATION = <<~EOS
This Authlogic configuration option (%s) is deprecated. Use normal
ActiveRecord validation instead. Detailed instructions:
https://github.com/binarylogic/authlogic/blob/master/doc/use_normal_rails_validation.md
EOS
def self.extended(klass)
klass.class_eval do
# TODO: Is this a confusing name, given this module is mixed into
# both `Authlogic::ActsAsAuthentic::Base` and
# `Authlogic::Session::Base`? Perhaps a more generic name, like
# `authlogic_config` would be better?
class_attribute :acts_as_authentic_config
self.acts_as_authentic_config ||= {}
end
end
private
def deprecate_authlogic_config(method_name)
::ActiveSupport::Deprecation.warn(
format(E_USE_NORMAL_RAILS_VALIDATION, method_name)
)
end
# This is a one-liner method to write a config setting, read the config
# setting, and also set a default value for the setting.
def rw_config(key, value, default_value = nil)
if value.nil?
acts_as_authentic_config.include?(key) ? acts_as_authentic_config[key] : default_value
else
self.acts_as_authentic_config = acts_as_authentic_config.merge(key => value)
value
end
end
end
end