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/user.rb')
-rw-r--r--app/models/user.rb21
1 files changed, 18 insertions, 3 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index dca6570661e..3e62b755f33 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -500,8 +500,11 @@ class User < MainClusterwide::ApplicationRecord
# rubocop: disable CodeReuse/ServiceClass
after_transition any => :blocked do |user|
user.run_after_commit do
- Ci::DropPipelineService.new.execute_async_for_all(user.pipelines, :user_blocked, user)
- Ci::DisableUserPipelineSchedulesService.new.execute(user)
+ Ci::DropPipelinesAndDisableSchedulesForUserService.new.execute(
+ user,
+ reason: :user_blocked,
+ include_owned_projects_and_groups: false
+ )
end
end
@@ -512,11 +515,23 @@ class User < MainClusterwide::ApplicationRecord
NotificationService.new.user_deactivated(user.name, user.notification_email_or_default)
end
end
- # rubocop: enable CodeReuse/ServiceClass
after_transition active: :banned do |user|
user.create_banned_user
+
+ if Gitlab.com? # rubocop:disable Gitlab/AvoidGitlabInstanceChecks -- this is always necessary on GitLab.com
+ user.run_after_commit do
+ deep_clean_ci = user.custom_attributes.by_key(UserCustomAttribute::DEEP_CLEAN_CI_USAGE_WHEN_BANNED).exists?
+
+ Ci::DropPipelinesAndDisableSchedulesForUserService.new.execute(
+ user,
+ reason: :user_banned,
+ include_owned_projects_and_groups: deep_clean_ci
+ )
+ end
+ end
end
+ # rubocop: enable CodeReuse/ServiceClass
after_transition banned: :active do |user|
user.banned_user&.destroy