Commit ef2bd057 authored by Małgorzata Ksionek's avatar Małgorzata Ksionek

Add cr remarks

parent d9315938
...@@ -9,66 +9,104 @@ module Gitlab ...@@ -9,66 +9,104 @@ module Gitlab
end end
def perform(start_id, stop_id) def perform(start_id, stop_id)
user_ids = User.where(id: start_id..stop_id).where(require_two_factor_authentication_from_group: true).pluck(:id)
ActiveRecord::Base.connection.execute <<~SQL ActiveRecord::Base.connection.execute <<~SQL
UPDATE users UPDATE
SET require_two_factor_authentication_from_group = false users
WHERE users.id IN (#{user_ids.join(',')}) SET
AND users.require_two_factor_authentication_from_group = TRUE require_two_factor_authentication_from_group = FALSE
AND users.id NOT IN WHERE
( users.id BETWEEN #{start_id}
SELECT users_groups_query.user_id AND #{stop_id}
FROM ( AND users.require_two_factor_authentication_from_group = TRUE
SELECT users.id AS user_id, AND users.id NOT IN ( SELECT DISTINCT
members.source_id AS group_ids users_groups_query.user_id
FROM users FROM (
LEFT JOIN members SELECT
ON members.source_type = 'Namespace' users.id AS user_id,
AND members.requested_at IS NULL members.source_id AS group_ids
AND members.user_id = users.id FROM
AND members.type = 'GroupMember' users
WHERE users.require_two_factor_authentication_from_group = TRUE LEFT JOIN members ON members.source_type = 'Namespace'
AND users.id IN (#{user_ids.join(',')}) ) AS users_groups_query AND members.requested_at IS NULL
INNER JOIN lateral ( WITH recursive "base_and_ancestors" AS ( AND members.user_id = users.id
( AND members.type = 'GroupMember'
SELECT "namespaces".* WHERE
FROM "namespaces" users.require_two_factor_authentication_from_group = TRUE
WHERE "namespaces"."type" = 'Group' AND users.id BETWEEN #{start_id}
AND "namespaces"."id" = users_groups_query.group_ids) AND #{stop_id}) AS users_groups_query
UNION INNER JOIN LATERAL ( WITH RECURSIVE "base_and_ancestors" AS (
( (
SELECT "namespaces".* SELECT
FROM "namespaces", "namespaces"."type",
"base_and_ancestors" "namespaces"."id",
WHERE "namespaces"."type" = 'Group' "namespaces"."parent_id",
AND "namespaces"."id" = "base_and_ancestors"."parent_id")), "base_and_descendants" AS ( "namespaces"."require_two_factor_authentication"
( FROM
SELECT "namespaces".* "namespaces"
FROM "namespaces" WHERE
WHERE "namespaces"."type" = 'Group' "namespaces"."type" = 'Group'
AND "namespaces"."id" = users_groups_query.group_ids) AND "namespaces"."id" = users_groups_query.group_ids)
UNION UNION (
( SELECT
SELECT "namespaces".* "namespaces"."type",
FROM "namespaces", "namespaces"."id",
"base_and_descendants" "namespaces"."parent_id",
WHERE "namespaces"."type" = 'Group' "namespaces"."require_two_factor_authentication"
AND "namespaces"."parent_id" = "base_and_descendants"."id")) FROM
SELECT "namespaces".* "namespaces",
FROM ( "base_and_ancestors"
( WHERE
SELECT "namespaces".* "namespaces"."type" = 'Group'
FROM "base_and_ancestors" AS "namespaces" AND "namespaces"."id" = "base_and_ancestors"."parent_id")),
WHERE "namespaces"."type" = 'Group') "base_and_descendants" AS (
UNION (
( SELECT
SELECT "namespaces".* "namespaces"."type",
FROM "base_and_descendants" AS "namespaces" "namespaces"."id",
WHERE "namespaces"."type" = 'Group')) namespaces "namespaces"."parent_id",
WHERE "namespaces"."type" = 'Group' "namespaces"."require_two_factor_authentication"
AND "namespaces".require_two_factor_authentication = TRUE ) AS hierarchy_tree FROM
ON TRUE); "namespaces"
WHERE
"namespaces"."type" = 'Group'
AND "namespaces"."id" = users_groups_query.group_ids)
UNION (
SELECT
"namespaces"."type",
"namespaces"."id",
"namespaces"."parent_id",
"namespaces"."require_two_factor_authentication"
FROM
"namespaces",
"base_and_descendants"
WHERE
"namespaces"."type" = 'Group'
AND "namespaces"."parent_id" = "base_and_descendants"."id"))
SELECT
"namespaces".*
FROM ((
SELECT
"namespaces"."type",
"namespaces"."id",
"namespaces"."parent_id",
"namespaces"."require_two_factor_authentication"
FROM
"base_and_ancestors" AS "namespaces"
WHERE
"namespaces"."type" = 'Group')
UNION (
SELECT
"namespaces"."type",
"namespaces"."id",
"namespaces"."parent_id",
"namespaces"."require_two_factor_authentication"
FROM
"base_and_descendants" AS "namespaces"
WHERE
"namespaces"."type" = 'Group')) namespaces
WHERE
"namespaces"."type" = 'Group'
AND "namespaces"."require_two_factor_authentication" = TRUE) AS hierarchy_tree ON TRUE);
SQL SQL
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment