Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/members/project_member.rb')
-rw-r--r--app/models/members/project_member.rb24
1 files changed, 18 insertions, 6 deletions
diff --git a/app/models/members/project_member.rb b/app/models/members/project_member.rb
index 5040879e177..b45c0b6a0cc 100644
--- a/app/models/members/project_member.rb
+++ b/app/models/members/project_member.rb
@@ -1,6 +1,7 @@
# frozen_string_literal: true
class ProjectMember < Member
+ extend ::Gitlab::Utils::Override
SOURCE_TYPE = 'Project'
belongs_to :project, foreign_key: 'source_id'
@@ -19,11 +20,6 @@ class ProjectMember < Member
.where(projects: { namespace_id: groups.select(:id) })
end
- scope :without_project_bots, -> do
- left_join_users
- .merge(User.without_project_bot)
- end
-
class << self
# Add users to projects with passed access option
#
@@ -48,7 +44,7 @@ class ProjectMember < Member
project_ids.each do |project_id|
project = Project.find(project_id)
- Members::Projects::CreatorService.add_users( # rubocop:todo CodeReuse/ServiceClass
+ Members::Projects::CreatorService.add_users( # rubocop:disable CodeReuse/ServiceClass
project,
users,
access_level,
@@ -94,6 +90,22 @@ class ProjectMember < Member
{ project: project }
end
+ override :refresh_member_authorized_projects
+ def refresh_member_authorized_projects
+ return super unless Feature.enabled?(:specialized_service_for_project_member_auth_refresh)
+ return unless user
+
+ # rubocop:disable CodeReuse/ServiceClass
+ AuthorizedProjectUpdate::ProjectRecalculatePerUserService.new(project, user).execute
+
+ # Until we compare the inconsistency rates of the new, specialized service and
+ # the old approach, we still run AuthorizedProjectsWorker
+ # but with some delay and lower urgency as a safety net.
+ UserProjectAccessChangedService.new(user_id)
+ .execute(blocking: false, priority: UserProjectAccessChangedService::LOW_PRIORITY)
+ # rubocop:enable CodeReuse/ServiceClass
+ end
+
private
def send_invite