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