Class: Preloaders::UsersMaxAccessLevelByProjectPreloader
- Inherits:
-
Object
- Object
- Preloaders::UsersMaxAccessLevelByProjectPreloader
- Includes:
- Gitlab::Utils::StrongMemoize
- Defined in:
- app/models/preloaders/users_max_access_level_by_project_preloader.rb
Overview
This class preloads the max access level (role) for the users within the given projects and stores the values in requests store via the ProjectTeam class.
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(project_users:) ⇒ UsersMaxAccessLevelByProjectPreloader
constructor
A new instance of UsersMaxAccessLevelByProjectPreloader.
Constructor Details
#initialize(project_users:) ⇒ UsersMaxAccessLevelByProjectPreloader
Returns a new instance of UsersMaxAccessLevelByProjectPreloader.
9 10 11 |
# File 'app/models/preloaders/users_max_access_level_by_project_preloader.rb', line 9 def initialize(project_users:) @project_users = project_users.transform_values { |users| Array.wrap(users) } end |
Instance Method Details
#execute ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/models/preloaders/users_max_access_level_by_project_preloader.rb', line 13 def execute return unless @project_users.present? all_users = @project_users.values.flatten.uniq preload_users_namespace_bans(all_users) @project_users.each do |project, users| users.each do |user| access_level = access_levels.fetch([project.id, user.id], Gitlab::Access::NO_ACCESS) project.team.write_member_access_for_user_id(user.id, access_level) end end end |