37 lines
1.0 KiB
Ruby
37 lines
1.0 KiB
Ruby
class LdapUsersController < ApplicationController
|
|
def index
|
|
attributes = %w{dn cn uid mail admin}
|
|
filter = Net::LDAP::Filter.eq("uid", "*")
|
|
if params[:ou]
|
|
treebase = "ou=#{params[:ou]},cn=users,dc=kosmos,dc=org"
|
|
else
|
|
treebase = "ou=kosmos.org,cn=users,dc=kosmos,dc=org"
|
|
end
|
|
|
|
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
|
|
}
|
|
end
|
|
# ldap_client.get_operation_result
|
|
end
|
|
|
|
private
|
|
|
|
def ldap_client
|
|
ldap_client ||= Net::LDAP.new host: ENV['LDAP_HOST'],
|
|
port: ENV['LDAP_PORT'],
|
|
encryption: ENV['LDAP_USE_TLS'] ? :simple_tls : nil,
|
|
auth: {
|
|
method: :simple,
|
|
username: Rails.application.credentials.ldap[:username],
|
|
password: Rails.application.credentials.ldap[:password]
|
|
}
|
|
end
|
|
end
|