class Rodauth::FeatureConfiguration

def def_auth_method(meth, priv)

def def_auth_method(meth, priv)
  define_method(meth) do |&block|
    @auth.send(:define_method, meth, &block)
    @auth.send(:private, meth) if priv
    @auth.send(:alias_method, meth, meth)
  end
end

def def_auth_private_method(meth)

def def_auth_private_method(meth)
  umeth = :"_#{meth}"
  define_method(meth) do |&block|
    @auth.send(:define_method, umeth, &block)
    @auth.send(:private, umeth)
    @auth.send(:alias_method, umeth, umeth)
  end
end

def def_auth_value_method(meth, priv)

def def_auth_value_method(meth, priv)
  define_method(meth) do |v=nil, &block|
    block ||= proc{v}
    @auth.send(:define_method, meth, &block)
    @auth.send(:private, meth) if priv
    @auth.send(:alias_method, meth, meth)
  end
end

def def_configuration_methods(feature)

def def_configuration_methods(feature)
  private_methods = feature.private_instance_methods.map(&:to_sym)
  priv = proc{|m| private_methods.include?(m)}
  feature.auth_methods.each{|m| def_auth_method(m, priv[m])}
  feature.auth_value_methods.each{|m| def_auth_value_method(m, priv[m])}
  feature.auth_private_methods.each{|m| def_auth_private_method(m)}
end