diff --git a/app/services/ldap_manager/fetch_avatar.rb b/app/services/ldap_manager/fetch_avatar.rb index c2643f7..11035ae 100644 --- a/app/services/ldap_manager/fetch_avatar.rb +++ b/app/services/ldap_manager/fetch_avatar.rb @@ -9,7 +9,7 @@ module LdapManager attributes = %w{ jpegPhoto } filter = Net::LDAP::Filter.eq("cn", @cn) - entry = ldap_client.search(base: treebase, filter: filter, attributes: attributes).first + entry = client.search(base: treebase, filter: filter, attributes: attributes).first entry.try(:jpegPhoto) ? entry.jpegPhoto.first : nil end end diff --git a/app/services/ldap_service.rb b/app/services/ldap_service.rb index 1c56df6..a286314 100644 --- a/app/services/ldap_service.rb +++ b/app/services/ldap_service.rb @@ -3,30 +3,37 @@ class LdapService < ApplicationService @suffix = ENV["LDAP_SUFFIX"] || "dc=kosmos,dc=org" end + def modify(dn, operations=[]) + client.modify dn: dn, operations: operations + client.get_operation_result.code + end + def add_attribute(dn, attr, values) - ldap_client.add_attribute dn, attr, values + client.add_attribute dn, attr, values + client.get_operation_result.code end def replace_attribute(dn, attr, values) - ldap_client.replace_attribute dn, attr, values + client.replace_attribute dn, attr, values + client.get_operation_result.code end def delete_attribute(dn, attr) - ldap_client.delete_attribute dn, attr + client.delete_attribute dn, attr + client.get_operation_result.code end def add_entry(dn, attrs, interactive=false) - puts "Adding entry: #{dn}" if interactive - res = ldap_client.add dn: dn, attributes: attrs - puts res.inspect if interactive && !res - res + puts "Add entry: #{dn}" if interactive + client.add dn: dn, attributes: attrs + client.get_operation_result.code end def delete_entry(dn, interactive=false) - puts "Deleting entry: #{dn}" if interactive - res = ldap_client.delete dn: dn - puts res.inspect if interactive && !res - res + puts "Delete entry: #{dn}" if interactive + client.delete dn: dn + client.get_operation_result.code + end end def delete_all_entries! @@ -35,7 +42,7 @@ class LdapService < ApplicationService end filter = Net::LDAP::Filter.eq("objectClass", "*") - entries = ldap_client.search(base: @suffix, filter: filter, attributes: %w{dn}) + entries = client.search(base: @suffix, filter: filter, attributes: %w{dn}) entries.sort_by!{ |e| e.dn.length }.reverse! entries.each do |e| @@ -56,7 +63,7 @@ class LdapService < ApplicationService ] filter = Net::LDAP::Filter.eq("uid", args[:uid] || "*") - entries = ldap_client.search(base: treebase, filter: filter, attributes: attributes) + entries = client.search(base: treebase, filter: filter, attributes: attributes) entries.sort_by! { |e| e.cn[0] } entries = entries.collect do |e| { @@ -77,7 +84,7 @@ class LdapService < ApplicationService # filter = Net::LDAP::Filter.eq("objectClass", "*") treebase = "cn=users,#{@suffix}" - entries = ldap_client.search(base: treebase, filter: filter, attributes: attributes) + entries = client.search(base: treebase, filter: filter, attributes: attributes) entries.sort_by! { |e| e.ou[0] } @@ -129,8 +136,8 @@ class LdapService < ApplicationService private - def ldap_client - ldap_client ||= Net::LDAP.new host: ldap_config['host'], + def client + client ||= Net::LDAP.new host: ldap_config['host'], port: ldap_config['port'], # TODO has to be :simple_tls if TLS is enabled # encryption: ldap_config['ssl'],