26 lines
744 B
Ruby
26 lines
744 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Preloaders
|
|
# This class preloads the max access level for the user within the given projects and
|
|
# stores the values in requests store via the ProjectTeam class.
|
|
class UserMaxAccessLevelInProjectsPreloader
|
|
def initialize(projects, user)
|
|
@projects = projects
|
|
@user = user
|
|
end
|
|
|
|
def execute
|
|
access_levels = @user
|
|
.project_authorizations
|
|
.where(project_id: @projects)
|
|
.group(:project_id)
|
|
.maximum(:access_level)
|
|
|
|
@projects.each do |project|
|
|
access_level = access_levels[project.id] || Gitlab::Access::NO_ACCESS
|
|
ProjectTeam.new(project).write_member_access_for_user_id(@user.id, access_level)
|
|
end
|
|
end
|
|
end
|
|
end
|