diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-28 21:08:53 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-07-28 21:08:53 +0000 |
commit | 112fe349cb75b79a0075f5d3f89cf847b7beaf2d (patch) | |
tree | 9b1e1e9c61ab05e6725f7f961d02ddb57bf2d616 /app/services/authorized_project_update | |
parent | a66948df0c3fda7764965f8cf4c9c99226c0d44d (diff) | |
download | gitlab-ce-112fe349cb75b79a0075f5d3f89cf847b7beaf2d.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/authorized_project_update')
-rw-r--r-- | app/services/authorized_project_update/project_recalculate_per_user_service.rb | 22 | ||||
-rw-r--r-- | app/services/authorized_project_update/project_recalculate_service.rb | 13 |
2 files changed, 32 insertions, 3 deletions
diff --git a/app/services/authorized_project_update/project_recalculate_per_user_service.rb b/app/services/authorized_project_update/project_recalculate_per_user_service.rb new file mode 100644 index 00000000000..6141bfc6498 --- /dev/null +++ b/app/services/authorized_project_update/project_recalculate_per_user_service.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module AuthorizedProjectUpdate + class ProjectRecalculatePerUserService < ProjectRecalculateService + def initialize(project, user) + @project = project + @user = user + end + + private + + attr_reader :user + + def apply_scopes(project_authorizations) + super.where(user_id: user.id) # rubocop: disable CodeReuse/ActiveRecord + end + + def effective_access_levels + Projects::Members::EffectiveAccessLevelPerUserFinder.new(project, user).execute + end + end +end diff --git a/app/services/authorized_project_update/project_recalculate_service.rb b/app/services/authorized_project_update/project_recalculate_service.rb index cbb8efaf99f..d70d0efc2af 100644 --- a/app/services/authorized_project_update/project_recalculate_service.rb +++ b/app/services/authorized_project_update/project_recalculate_service.rb @@ -26,7 +26,7 @@ module AuthorizedProjectUpdate def current_authorizations strong_memoize(:current_authorizations) do - project.project_authorizations + apply_scopes(project.project_authorizations) .pluck(:user_id, :access_level) # rubocop: disable CodeReuse/ActiveRecord end end @@ -35,8 +35,7 @@ module AuthorizedProjectUpdate strong_memoize(:fresh_authorizations) do result = [] - Projects::Members::EffectiveAccessLevelFinder.new(project) - .execute + effective_access_levels .each_batch(of: BATCH_SIZE, column: :user_id) do |member_batch| result += member_batch.pluck(:user_id, 'MAX(access_level)') # rubocop: disable CodeReuse/ActiveRecord end @@ -76,5 +75,13 @@ module AuthorizedProjectUpdate end end end + + def apply_scopes(project_authorizations) + project_authorizations + end + + def effective_access_levels + Projects::Members::EffectiveAccessLevelFinder.new(project).execute + end end end |