Sha256: 94ba4fa8c565c55147d55cd15f46e0e9c759bb9ceb9aeb20aaf39c45a3a3d663

Contents?: true

Size: 652 Bytes

Versions: 4

Compression:

Stored size: 652 Bytes

Contents

module EgovUtils
  class RefreshUserGroups

    def initialize(user)
      @user = user
    end

    def call
      group_ids = (current_non_ldap_group + ldap_groups).compact.map(&:id)
      user.group_ids = group_ids
      user
    end

    private

    attr_reader :user

    def ldap_groups
      return [] if user.provider.blank?

      @ldap_groups ||= begin
        EgovUtils::Group.where(provider: user.provider).to_a.select do |g|
          user.auth_source.member?(user.ldap_dn, g.external_uid)
        end
      end
    end

    def current_non_ldap_group
      @current_non_ldap_groups ||= user.groups.where(ldap_uid: nil)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
egov_utils-1.1.1 app/services/egov_utils/refresh_user_groups.rb
egov_utils-1.1.0 app/services/egov_utils/refresh_user_groups.rb
egov_utils-1.0.3 app/services/egov_utils/refresh_user_groups.rb
egov_utils-1.0.2 app/services/egov_utils/refresh_user_groups.rb