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
 |