28 lines
952 B
Ruby
28 lines
952 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Preloaders
|
|
# This class preloads the max access level (role) for the user within the given groups and
|
|
# stores the values in requests store.
|
|
# Will only be able to preload max access level for groups where the user is a direct member
|
|
class UserMaxAccessLevelInGroupsPreloader
|
|
include BulkMemberAccessLoad
|
|
|
|
def initialize(groups, user)
|
|
@groups = groups
|
|
@user = user
|
|
end
|
|
|
|
def execute
|
|
group_memberships = GroupMember.active_without_invites_and_requests
|
|
.non_minimal_access
|
|
.where(user: @user, source_id: @groups)
|
|
.group(:source_id)
|
|
.maximum(:access_level)
|
|
|
|
group_memberships.each do |group_id, max_access_level|
|
|
merge_value_to_request_store(User, @user.id, group_id, max_access_level)
|
|
end
|
|
end
|
|
end
|
|
end
|