From f6a6b1e86adaf4603ceba5fd6b0b9162cee64c0a Mon Sep 17 00:00:00 2001 From: Thorsten Schau Date: Thu, 24 Aug 2023 18:17:08 +0200 Subject: [PATCH] adding stored procedure to disable users --- package.json | 2 +- ...0700__add-disabledCirclesAddressColumn.sql | 46 +++++++++++++ ..._add-safeBackupTableAndMoveSaveAddress.sql | 69 +++++++++++++++++++ ...0__update-sp_DisableProfileAndShopProc.sql | 52 ++++++++++++++ 4 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 src/api-db-migrations/20230808120700__add-disabledCirclesAddressColumn.sql create mode 100644 src/api-db-migrations/20230814152100__add-safeBackupTableAndMoveSaveAddress.sql create mode 100644 src/api-db-migrations/20230824142200__update-sp_DisableProfileAndShopProc.sql diff --git a/package.json b/package.json index b73ded59..8c3b006a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@o-platform/api-server", - "version": "1.0.3", + "version": "1.0.3-1", "description": "", "main": "dist/index.js", "prepublish": "tsc", diff --git a/src/api-db-migrations/20230808120700__add-disabledCirclesAddressColumn.sql b/src/api-db-migrations/20230808120700__add-disabledCirclesAddressColumn.sql new file mode 100644 index 00000000..39d99bac --- /dev/null +++ b/src/api-db-migrations/20230808120700__add-disabledCirclesAddressColumn.sql @@ -0,0 +1,46 @@ +-- migrate:up +ALTER TABLE "Profile" + ADD COLUMN "disabledCirclesAddress" TEXT; + +CREATE OR REPLACE PROCEDURE sp_DisableProfileAndShop(address varchar(100)) +LANGUAGE plpgsql +AS $$ +BEGIN + -- Copy circlesAddress to disabledCirclesAddress + UPDATE + "Profile" + SET + "disabledCirclesAddress" = "circlesAddress" + WHERE + "circlesAddress" = address; + -- Set disabled status + UPDATE + "Profile" + SET + "status" = 'disabled' + WHERE + "circlesAddress" = address; + -- Remove CirclesAddress + UPDATE + "Profile" + SET + "circlesAddress" = NULL + WHERE + "circlesAddress" = address; + -- Disable the Shop + UPDATE + "Profile" + SET + "shopEnabled" = FALSE + WHERE + id IN( + SELECT + "memberAtId" + FROM + "Membership" + WHERE + "memberAddress" = address + AND "isAdmin" = TRUE); +END +$$ +-- migrate:down diff --git a/src/api-db-migrations/20230814152100__add-safeBackupTableAndMoveSaveAddress.sql b/src/api-db-migrations/20230814152100__add-safeBackupTableAndMoveSaveAddress.sql new file mode 100644 index 00000000..41485b0e --- /dev/null +++ b/src/api-db-migrations/20230814152100__add-safeBackupTableAndMoveSaveAddress.sql @@ -0,0 +1,69 @@ +-- migrate:up +ALTER TABLE "Profile" + ADD COLUMN "disabledCirclesSafeOwner" TEXT; + +CREATE OR REPLACE PROCEDURE sp_DisableProfileAndShop(address varchar(100)) +LANGUAGE plpgsql +AS $$ +BEGIN + -- Remove Session + DELETE FROM "Session" + WHERE "Session"."profileId" IN( + SELECT + "id" + FROM + "Profile" + WHERE + "circlesAddress" = address); + -- Copy circlesAddress to disabledCirclesAddress + UPDATE + "Profile" + SET + "disabledCirclesAddress" = "circlesAddress" + WHERE + "circlesAddress" = address; + -- Copy circlesSafeOwner to disabledCirclesSafeOwner + UPDATE + "Profile" + SET + "disabledCirclesSafeOwner" = "circlesSafeOwner" + WHERE + "circlesAddress" = address; + -- Set disabled status + UPDATE + "Profile" + SET + "status" = 'disabled' + WHERE + "circlesAddress" = address; + -- Remove circlesSafeOwner + UPDATE + "Profile" + SET + "circlesSafeOwner" = NULL + WHERE + "circlesAddress" = address; + -- Remove CirclesAddress + UPDATE + "Profile" + SET + "circlesAddress" = NULL + WHERE + "circlesAddress" = address; + -- Disable the Shop + UPDATE + "Profile" + SET + "shopEnabled" = FALSE + WHERE + id IN( + SELECT + "memberAtId" + FROM + "Membership" + WHERE + "memberAddress" = address + AND "isAdmin" = TRUE); +END +$$ +-- migrate:down diff --git a/src/api-db-migrations/20230824142200__update-sp_DisableProfileAndShopProc.sql b/src/api-db-migrations/20230824142200__update-sp_DisableProfileAndShopProc.sql new file mode 100644 index 00000000..d92759ca --- /dev/null +++ b/src/api-db-migrations/20230824142200__update-sp_DisableProfileAndShopProc.sql @@ -0,0 +1,52 @@ +-- migrate:up +CREATE OR REPLACE PROCEDURE sp_DisableProfileAndShop(address varchar(100)) +LANGUAGE plpgsql +AS $$ +BEGIN + -- Remove Session + DELETE FROM "Session" + WHERE "Session"."profileId" IN( + SELECT + "id" + FROM + "Profile" + WHERE + "circlesAddress" = address); + -- Copy circlesAddress to disabledCirclesAddress + UPDATE + "Profile" + SET + "disabledCirclesAddress" = "circlesAddress" + WHERE + "circlesAddress" = address; + -- Set disabled status + UPDATE + "Profile" + SET + "status" = 'disabled' + WHERE + "circlesAddress" = address; + -- Remove CirclesAddress + UPDATE + "Profile" + SET + "circlesAddress" = NULL + WHERE + "circlesAddress" = address; + -- Disable the Shop + UPDATE + "Profile" + SET + "shopEnabled" = FALSE + WHERE + id IN( + SELECT + "memberAtId" + FROM + "Membership" + WHERE + "memberAddress" = address + AND "isAdmin" = TRUE); +END +$$ +-- migrate:down