debian-mirror-gitlab/app/models/preloaders/user_max_access_level_in_projects_preloader.rb
2021-04-29 21:17:54 +05:30

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