migrate_ldap_samaccountname_to_uid_job.rb 1.2 KB

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