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/services/members/creator_service.rb')
-rw-r--r--app/services/members/creator_service.rb51
1 files changed, 27 insertions, 24 deletions
diff --git a/app/services/members/creator_service.rb b/app/services/members/creator_service.rb
index a6fff3003ac..cc18aae7446 100644
--- a/app/services/members/creator_service.rb
+++ b/app/services/members/creator_service.rb
@@ -39,31 +39,34 @@ module Members
sources = Array.wrap(sources) if sources.is_a?(ApplicationRecord) # For single source
- Member.transaction do
- sources.flat_map do |source|
- # If this user is attempting to manage Owner members and doesn't have permission, do not allow
- if managing_owners?(args[:current_user], access_level) && cannot_manage_owners?(source, args[:current_user])
- next []
+ Gitlab::Database::QueryAnalyzers::PreventCrossDatabaseModification.temporary_ignore_tables_in_transaction(
+ %w[users user_preferences user_details emails identities], url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/424276'
+ ) do
+ Member.transaction do
+ sources.flat_map do |source|
+ # If this user is attempting to manage Owner members and doesn't have permission, do not allow
+ current_user = args[:current_user]
+ next [] if managing_owners?(current_user, access_level) && cannot_manage_owners?(source, current_user)
+
+ emails, users, existing_members = parse_users_list(source, invitees)
+
+ common_arguments = {
+ source: source,
+ access_level: access_level,
+ existing_members: existing_members,
+ tasks_to_be_done: args[:tasks_to_be_done] || []
+ }.merge(parsed_args(args))
+
+ members = emails.map do |email|
+ new(invitee: email, builder: InviteMemberBuilder, **common_arguments).execute
+ end
+
+ members += users.map do |user|
+ new(invitee: user, **common_arguments).execute
+ end
+
+ members
end
-
- emails, users, existing_members = parse_users_list(source, invitees)
-
- common_arguments = {
- source: source,
- access_level: access_level,
- existing_members: existing_members,
- tasks_to_be_done: args[:tasks_to_be_done] || []
- }.merge(parsed_args(args))
-
- members = emails.map do |email|
- new(invitee: email, builder: InviteMemberBuilder, **common_arguments).execute
- end
-
- members += users.map do |user|
- new(invitee: user, **common_arguments).execute
- end
-
- members
end
end
end