summaryrefslogtreecommitdiff
path: root/app/services/authorized_project_update
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-07-28 21:08:53 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-07-28 21:08:53 +0000
commit112fe349cb75b79a0075f5d3f89cf847b7beaf2d (patch)
tree9b1e1e9c61ab05e6725f7f961d02ddb57bf2d616 /app/services/authorized_project_update
parenta66948df0c3fda7764965f8cf4c9c99226c0d44d (diff)
downloadgitlab-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.rb22
-rw-r--r--app/services/authorized_project_update/project_recalculate_service.rb13
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