class ZuoraConnect::LDAP::Connection

def initialize(params = {})

def initialize(params = {})
  ldap_config = YAML.load(ERB.new(File.read("#{Rails.root}/config/ldap.yml")).result)[Rails.env]
  ldap_options = params
  # Allow `ssl: true` shorthand in YAML, but enable more control with `encryption`
  ldap_config['ssl'] = :simple_tls if ldap_config['ssl'] === true
  ldap_options[:encryption] = ldap_config['ssl'].to_sym if ldap_config['ssl']
  ldap_options[:encryption] = ldap_config['encryption'] if ldap_config['encryption']
  @ldap = Net::LDAP.new(ldap_options)
  @ldap.host = ldap_config['host']
  @ldap.port = ldap_config['port']
  @ldap.base = ldap_config['base']
  @attribute = ldap_config['attribute']
  @allow_unauthenticated_bind = ldap_config['allow_unauthenticated_bind']
  @ldap_auth_username_builder = params[:ldap_auth_username_builder]
  @group_base = ldap_config['group_base']
  @check_group_membership = ldap_config.key?('check_group_membership') ? ldap_config['check_group_membership'] : false
  @check_group_membership_without_admin = ldap_config.key?('check_group_membership_without_admin') ? ldap_config['check_group_membership_without_admin'] : false
  @required_groups = ldap_config['required_groups']
  @group_membership_attribute = ldap_config.key?('group_membership_attribute') ? ldap_config['group_membership_attribute'] : 'uniqueMember'
  @required_attributes = ldap_config['require_attribute']
  @required_attributes_presence = ldap_config['require_attribute_presence']
  @ldap.auth ldap_config['admin_user'], ldap_config['admin_password'] if params[:admin]
  @login = params[:login]
  @password = params[:password]
  @new_password = params[:new_password]
end