46 lines
1.2 KiB
Ruby
46 lines
1.2 KiB
Ruby
class Admin::LdapUsersController < Admin::BaseController
|
|
before_action :set_current_section
|
|
|
|
def index
|
|
attributes = %w{dn cn uid mail admin}
|
|
filter = Net::LDAP::Filter.eq("uid", "*")
|
|
|
|
@ou = params[:ou] || "kosmos.org"
|
|
treebase = "ou=#{@ou},cn=users,dc=kosmos,dc=org"
|
|
|
|
entries = ldap_client.search(base: treebase, filter: filter, attributes: attributes)
|
|
entries.sort_by! { |e| e.cn[0] }
|
|
|
|
@entries = entries.collect do |e|
|
|
{
|
|
uid: e.uid.first,
|
|
mail: e.try(:mail) ? e.mail.first : nil,
|
|
admin: e.try(:admin) ? 'admin' : nil
|
|
# password: e.userpassword.first
|
|
}
|
|
end
|
|
# ldap_client.get_operation_result
|
|
end
|
|
|
|
private
|
|
|
|
def ldap_client
|
|
ldap_client ||= Net::LDAP.new host: ldap_config['host'],
|
|
port: ldap_config['port'],
|
|
encryption: ldap_config['ssl'],
|
|
auth: {
|
|
method: :simple,
|
|
username: ldap_config['admin_user'],
|
|
password: ldap_config['admin_password']
|
|
}
|
|
end
|
|
|
|
def ldap_config
|
|
ldap_config ||= YAML.load(ERB.new(File.read("#{Rails.root}/config/ldap.yml")).result)[Rails.env]
|
|
end
|
|
|
|
def set_current_section
|
|
@current_section = :ldap_users
|
|
end
|
|
end
|