mirror of
https://github.com/bitwarden/server.git
synced 2025-07-02 00:22:50 -05:00
[AC-1682] Drop temp tables if they exist when starting the scripts
This commit is contained in:
@ -1,6 +1,7 @@
|
|||||||
-- Step 1: AccessAll migration for Groups
|
-- Step 1: AccessAll migration for Groups
|
||||||
-- Create a temporary table to store the groups with AccessAll = 1
|
-- Create a temporary table to store the groups with AccessAll = 1
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS `TempGroupsAccessAll` AS
|
DROP TEMPORARY TABLE IF EXISTS `TempGroupsAccessAll`;
|
||||||
|
CREATE TEMPORARY TABLE `TempGroupsAccessAll` AS
|
||||||
SELECT `G`.`Id` AS `GroupId`,
|
SELECT `G`.`Id` AS `GroupId`,
|
||||||
`G`.`OrganizationId`
|
`G`.`OrganizationId`
|
||||||
FROM `Group` `G`
|
FROM `Group` `G`
|
||||||
@ -9,7 +10,8 @@
|
|||||||
|
|
||||||
-- Step 2: AccessAll migration for OrganizationUsers
|
-- Step 2: AccessAll migration for OrganizationUsers
|
||||||
-- Create a temporary table to store the OrganizationUsers with AccessAll = 1
|
-- Create a temporary table to store the OrganizationUsers with AccessAll = 1
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS `TempUsersAccessAll` AS
|
DROP TEMPORARY TABLE IF EXISTS `TempUsersAccessAll`;
|
||||||
|
CREATE TEMPORARY TABLE `TempUsersAccessAll` AS
|
||||||
SELECT `OU`.`Id` AS `OrganizationUserId`,
|
SELECT `OU`.`Id` AS `OrganizationUserId`,
|
||||||
`OU`.`OrganizationId`
|
`OU`.`OrganizationId`
|
||||||
FROM `OrganizationUser` `OU`
|
FROM `OrganizationUser` `OU`
|
||||||
@ -19,7 +21,8 @@
|
|||||||
-- Step 3: For all OrganizationUsers with Manager role or 'EditAssignedCollections' permission update their existing CollectionUsers rows and insert new rows with [Manage] = 1
|
-- Step 3: For all OrganizationUsers with Manager role or 'EditAssignedCollections' permission update their existing CollectionUsers rows and insert new rows with [Manage] = 1
|
||||||
-- and finally update all OrganizationUsers with Manager role to User role
|
-- and finally update all OrganizationUsers with Manager role to User role
|
||||||
-- Create a temporary table to store the OrganizationUsers with Manager role or 'EditAssignedCollections' permission
|
-- Create a temporary table to store the OrganizationUsers with Manager role or 'EditAssignedCollections' permission
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS `TempUserManagers` AS
|
DROP TEMPORARY TABLE IF EXISTS `TempUserManagers`;
|
||||||
|
CREATE TEMPORARY TABLE `TempUserManagers` AS
|
||||||
SELECT `OU`.`Id` AS `OrganizationUserId`,
|
SELECT `OU`.`Id` AS `OrganizationUserId`,
|
||||||
CASE WHEN `OU`.`Type` = 3 THEN 1 ELSE 0 END AS `IsManager`
|
CASE WHEN `OU`.`Type` = 3 THEN 1 ELSE 0 END AS `IsManager`
|
||||||
FROM `OrganizationUser` `OU`
|
FROM `OrganizationUser` `OU`
|
||||||
@ -138,7 +141,7 @@ START TRANSACTION;
|
|||||||
-- Commit transaction
|
-- Commit transaction
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
||||||
-- Step 5: Drop the temporary tables
|
-- Step 6: Drop the temporary tables
|
||||||
DROP TEMPORARY TABLE IF EXISTS `TempGroupsAccessAll`;
|
DROP TEMPORARY TABLE IF EXISTS `TempGroupsAccessAll`;
|
||||||
DROP TEMPORARY TABLE IF EXISTS `TempUsersAccessAll`;
|
DROP TEMPORARY TABLE IF EXISTS `TempUsersAccessAll`;
|
||||||
DROP TEMPORARY TABLE IF EXISTS `TempUserManagers`;
|
DROP TEMPORARY TABLE IF EXISTS `TempUserManagers`;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
-- Step 1: AccessAll migration for Groups
|
-- Step 1: AccessAll migration for Groups
|
||||||
-- Create a temporary table to store the groups with AccessAll = true
|
-- Create a temporary table to store the groups with AccessAll = true
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS "TempGroupsAccessAll" AS
|
DROP TABLE IF EXISTS "TempGroupsAccessAll";
|
||||||
|
CREATE TEMPORARY TABLE "TempGroupsAccessAll" AS
|
||||||
SELECT "G"."Id" AS "GroupId",
|
SELECT "G"."Id" AS "GroupId",
|
||||||
"G"."OrganizationId"
|
"G"."OrganizationId"
|
||||||
FROM "Group" "G"
|
FROM "Group" "G"
|
||||||
@ -9,7 +10,8 @@
|
|||||||
|
|
||||||
-- Step 2: AccessAll migration for OrganizationUsers
|
-- Step 2: AccessAll migration for OrganizationUsers
|
||||||
-- Create a temporary table to store the OrganizationUsers with AccessAll = true
|
-- Create a temporary table to store the OrganizationUsers with AccessAll = true
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS "TempUsersAccessAll" AS
|
DROP TABLE IF EXISTS "TempUsersAccessAll";
|
||||||
|
CREATE TEMPORARY TABLE "TempUsersAccessAll" AS
|
||||||
SELECT "OU"."Id" AS "OrganizationUserId",
|
SELECT "OU"."Id" AS "OrganizationUserId",
|
||||||
"OU"."OrganizationId"
|
"OU"."OrganizationId"
|
||||||
FROM "OrganizationUser" "OU"
|
FROM "OrganizationUser" "OU"
|
||||||
@ -19,7 +21,8 @@
|
|||||||
-- Step 3: For all OrganizationUsers with Manager role or 'EditAssignedCollections' permission update their existing CollectionUsers rows and insert new rows with Manage = 1
|
-- Step 3: For all OrganizationUsers with Manager role or 'EditAssignedCollections' permission update their existing CollectionUsers rows and insert new rows with Manage = 1
|
||||||
-- and finally update all OrganizationUsers with Manager role to User role
|
-- and finally update all OrganizationUsers with Manager role to User role
|
||||||
-- Create a temporary table to store the OrganizationUsers with Manager role or 'EditAssignedCollections' permission
|
-- Create a temporary table to store the OrganizationUsers with Manager role or 'EditAssignedCollections' permission
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS "TempUserManagers" AS
|
DROP TABLE IF EXISTS "TempUserManagers";
|
||||||
|
CREATE TEMPORARY TABLE "TempUserManagers" AS
|
||||||
SELECT "OU"."Id" AS "OrganizationUserId",
|
SELECT "OU"."Id" AS "OrganizationUserId",
|
||||||
CASE WHEN "OU"."Type" = 3 THEN true ELSE false END AS "IsManager"
|
CASE WHEN "OU"."Type" = 3 THEN true ELSE false END AS "IsManager"
|
||||||
FROM "OrganizationUser" "OU"
|
FROM "OrganizationUser" "OU"
|
||||||
@ -30,7 +33,7 @@
|
|||||||
"OU"."Permissions" IS NOT NULL AND
|
"OU"."Permissions" IS NOT NULL AND
|
||||||
(("OU"."Permissions"::text)::jsonb->>'editAssignedCollections') = 'true'));
|
(("OU"."Permissions"::text)::jsonb->>'editAssignedCollections') = 'true'));
|
||||||
|
|
||||||
-- Step 1
|
-- Step 1
|
||||||
-- Update existing rows in CollectionGroups
|
-- Update existing rows in CollectionGroups
|
||||||
UPDATE "CollectionGroups" "CG"
|
UPDATE "CollectionGroups" "CG"
|
||||||
SET "ReadOnly" = false,
|
SET "ReadOnly" = false,
|
||||||
@ -53,7 +56,7 @@
|
|||||||
SET "AccessAll" = false, "RevisionDate" = CURRENT_TIMESTAMP
|
SET "AccessAll" = false, "RevisionDate" = CURRENT_TIMESTAMP
|
||||||
WHERE "G"."Id" IN (SELECT "GroupId" FROM "TempGroupsAccessAll");
|
WHERE "G"."Id" IN (SELECT "GroupId" FROM "TempGroupsAccessAll");
|
||||||
|
|
||||||
-- Step 2
|
-- Step 2
|
||||||
-- Update existing rows in CollectionUsers
|
-- Update existing rows in CollectionUsers
|
||||||
UPDATE "CollectionUsers" "target"
|
UPDATE "CollectionUsers" "target"
|
||||||
SET "ReadOnly" = false,
|
SET "ReadOnly" = false,
|
||||||
@ -77,7 +80,7 @@
|
|||||||
SET "AccessAll" = false, "RevisionDate" = CURRENT_TIMESTAMP
|
SET "AccessAll" = false, "RevisionDate" = CURRENT_TIMESTAMP
|
||||||
WHERE "OU"."Id" IN (SELECT "OrganizationUserId" FROM "TempUsersAccessAll");
|
WHERE "OU"."Id" IN (SELECT "OrganizationUserId" FROM "TempUsersAccessAll");
|
||||||
|
|
||||||
-- Step 3
|
-- Step 3
|
||||||
-- Update CollectionUsers with Manage = 1 using the temporary table
|
-- Update CollectionUsers with Manage = 1 using the temporary table
|
||||||
UPDATE "CollectionUsers" "CU"
|
UPDATE "CollectionUsers" "CU"
|
||||||
SET "ReadOnly" = false,
|
SET "ReadOnly" = false,
|
||||||
@ -104,7 +107,7 @@
|
|||||||
SET "Type" = 2, "RevisionDate" = CURRENT_TIMESTAMP -- User
|
SET "Type" = 2, "RevisionDate" = CURRENT_TIMESTAMP -- User
|
||||||
WHERE "OU"."Id" IN (SELECT "OrganizationUserId" FROM "TempUserManagers" WHERE "IsManager" = true);
|
WHERE "OU"."Id" IN (SELECT "OrganizationUserId" FROM "TempUserManagers" WHERE "IsManager" = true);
|
||||||
|
|
||||||
-- Step 4
|
-- Step 4
|
||||||
-- Update "User" "AccountRevisionDate" for each unique "OrganizationUserId"
|
-- Update "User" "AccountRevisionDate" for each unique "OrganizationUserId"
|
||||||
UPDATE "User" "U"
|
UPDATE "User" "U"
|
||||||
SET "AccountRevisionDate" = CURRENT_TIMESTAMP
|
SET "AccountRevisionDate" = CURRENT_TIMESTAMP
|
||||||
@ -120,13 +123,13 @@
|
|||||||
SELECT "OrganizationUserId" FROM "TempUserManagers"
|
SELECT "OrganizationUserId" FROM "TempUserManagers"
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Step 5
|
-- Step 5
|
||||||
-- Set "FlexibleCollections" = true for all organizations that have not yet been migrated.
|
-- Set "FlexibleCollections" = true for all organizations that have not yet been migrated.
|
||||||
UPDATE "Organization"
|
UPDATE "Organization"
|
||||||
SET "FlexibleCollections" = true
|
SET "FlexibleCollections" = true
|
||||||
WHERE "FlexibleCollections" = false;
|
WHERE "FlexibleCollections" = false;
|
||||||
|
|
||||||
-- Step 5: Drop the temporary tables
|
-- Step 6: Drop the temporary tables
|
||||||
DROP TABLE IF EXISTS "TempGroupsAccessAll";
|
DROP TABLE IF EXISTS "TempGroupsAccessAll";
|
||||||
DROP TABLE IF EXISTS "TempUsersAccessAll";
|
DROP TABLE IF EXISTS "TempUsersAccessAll";
|
||||||
DROP TABLE IF EXISTS "TempUserManagers";
|
DROP TABLE IF EXISTS "TempUserManagers";
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
-- Step 1: AccessAll migration for Groups
|
-- Step 1: AccessAll migration for Groups
|
||||||
-- Create a temporary table to store the groups with AccessAll = 1
|
-- Create a temporary table to store the groups with AccessAll = 1
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS "TempGroupsAccessAll" AS
|
DROP TABLE IF EXISTS "TempGroupsAccessAll";
|
||||||
|
CREATE TEMPORARY TABLE "TempGroupsAccessAll" AS
|
||||||
SELECT "G"."Id" AS "GroupId",
|
SELECT "G"."Id" AS "GroupId",
|
||||||
"G"."OrganizationId"
|
"G"."OrganizationId"
|
||||||
FROM "Group" "G"
|
FROM "Group" "G"
|
||||||
@ -9,7 +10,8 @@
|
|||||||
|
|
||||||
-- Step 2: AccessAll migration for OrganizationUsers
|
-- Step 2: AccessAll migration for OrganizationUsers
|
||||||
-- Create a temporary table to store the OrganizationUsers with AccessAll = 1
|
-- Create a temporary table to store the OrganizationUsers with AccessAll = 1
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS "TempUsersAccessAll" AS
|
DROP TABLE IF EXISTS "TempUsersAccessAll";
|
||||||
|
CREATE TEMPORARY TABLE "TempUsersAccessAll" AS
|
||||||
SELECT "OU"."Id" AS "OrganizationUserId",
|
SELECT "OU"."Id" AS "OrganizationUserId",
|
||||||
"OU"."OrganizationId"
|
"OU"."OrganizationId"
|
||||||
FROM "OrganizationUser" "OU"
|
FROM "OrganizationUser" "OU"
|
||||||
@ -19,7 +21,8 @@
|
|||||||
-- Step 3: For all OrganizationUsers with Manager role or 'EditAssignedCollections' permission update their existing CollectionUsers rows and insert new rows with [Manage] = 1
|
-- Step 3: For all OrganizationUsers with Manager role or 'EditAssignedCollections' permission update their existing CollectionUsers rows and insert new rows with [Manage] = 1
|
||||||
-- and finally update all OrganizationUsers with Manager role to User role
|
-- and finally update all OrganizationUsers with Manager role to User role
|
||||||
-- Create a temporary table to store the OrganizationUsers with Manager role or 'EditAssignedCollections' permission
|
-- Create a temporary table to store the OrganizationUsers with Manager role or 'EditAssignedCollections' permission
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS "TempUserManagers" AS
|
DROP TABLE IF EXISTS "TempUserManagers";
|
||||||
|
CREATE TEMPORARY TABLE "TempUserManagers" AS
|
||||||
SELECT "OU"."Id" AS "OrganizationUserId",
|
SELECT "OU"."Id" AS "OrganizationUserId",
|
||||||
CASE WHEN "OU"."Type" = 3 THEN 1 ELSE 0 END AS "IsManager"
|
CASE WHEN "OU"."Type" = 3 THEN 1 ELSE 0 END AS "IsManager"
|
||||||
FROM "OrganizationUser" "OU"
|
FROM "OrganizationUser" "OU"
|
||||||
|
Reference in New Issue
Block a user