migrate_ldap_samaccountname_to_uid_job.rb 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
  2. class MigrateLdapSamaccountnameToUidJob < ApplicationJob
  3. def perform
  4. Rails.logger.info 'Checking for active LDAP configuration...'
  5. if ldap_config.blank?
  6. Rails.logger.info 'Blank LDAP configuration. Exiting.'
  7. return
  8. end
  9. Rails.logger.info 'Checking for different LDAP uid attribute...'
  10. if uid_attribute_obsolete == uid_attribute_new
  11. Rails.logger.info 'Equal LDAP uid attributes. Exiting.'
  12. return
  13. end
  14. Rails.logger.info 'Starting to migrate LDAP config to new uid attribute...'
  15. migrate_ldap_config
  16. Rails.logger.info 'LDAP uid attribute migration completed.'
  17. end
  18. private
  19. def ldap
  20. @ldap ||= ::Ldap.new(ldap_config)
  21. end
  22. def ldap_config
  23. @ldap_config ||= Import::Ldap.config
  24. end
  25. def uid_attribute_new
  26. @uid_attribute_new ||= begin
  27. config = {
  28. filter: ldap_config['user_filter']
  29. }
  30. ::Ldap::User.new(config, ldap: ldap).uid_attribute
  31. end
  32. end
  33. def uid_attribute_obsolete
  34. @uid_attribute_obsolete ||= ldap_config['user_uid']
  35. end
  36. def migrate_ldap_config
  37. ldap_config_new = ldap_config.merge(
  38. 'user_uid' => uid_attribute_new
  39. )
  40. Setting.set('ldap_config', ldap_config_new)
  41. end
  42. end