ManageIQ/manageiq-automation_engine

View on GitHub
lib/miq_automation_engine/service_models/miq_ae_service_user.rb

Summary

Maintainability
A
0 mins
Test Coverage
F
59%
module MiqAeMethodService
  class MiqAeServiceUser < MiqAeServiceModelBase
    require_relative "mixins/miq_ae_service_custom_attribute_mixin"
    include MiqAeServiceCustomAttributeMixin
    require_relative "mixins/miq_ae_external_url_mixin"
    include MiqAeExternalUrlMixin

    expose :current_tenant, :association => true
    expose :name
    expose :email
    expose :userid
    expose :ldap_group

    def role
      ar_method { @object.role.nil? ? nil : @object.role.name }
    end

    def get_ldap_attribute_names
      ar_method do
        ldap_user = find_ldap_user
        ldap_user.attribute_names
      end
    end

    def get_ldap_attribute(name)
      ar_method do
        ldap_user = find_ldap_user
        value     = MiqLdap.get_attr(ldap_user, name.to_sym)
        value.nil? ? nil : value.dup
      end
    end

    def miq_group
      $miq_ae_logger.warn("[DEPRECATION] #{self.class.name}#miq_group accessor is deprecated.  Please use current_group instead.  At #{caller[0]}")
      current_group
    end

    private

    def find_ldap_user
      ldap = MiqLdap.new
      raise "Cannot bind to LDAP with system defaults (see evm.log for details)" if ldap.bind_with_default == false

      ldap_user = ldap.get_user_object(@object.email, 'mail') || ldap.get_user_object(@object.userid, 'userprincipalname')
      raise "No information returned for email=<#{@object.email}> userid=<#{@object.userid}>" if ldap_user.nil?

      ldap_user
    end
  end
end