From 1788076a84298ff0188d31266e13f4e4aabecfc7 Mon Sep 17 00:00:00 2001 From: Hassan Ben Jobrane Date: Thu, 12 Oct 2023 11:13:15 +0100 Subject: [PATCH] fix: make sure existing modified permissions are not overwritten --- src/utils/hasura-metadata/helpers.ts | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/utils/hasura-metadata/helpers.ts b/src/utils/hasura-metadata/helpers.ts index ed2cb69b0..e375b226e 100644 --- a/src/utils/hasura-metadata/helpers.ts +++ b/src/utils/hasura-metadata/helpers.ts @@ -115,16 +115,34 @@ export const patchTableObject = ( } if (select_permissions) { - const mergedSelectPermissions = [...(existingTable.select_permissions ?? []), ...select_permissions]; + const mergedSelectPermissions = [ + ...select_permissions, + ...(existingTable.select_permissions ?? []), + ]; + existingTable.select_permissions = [ - ...new Map(mergedSelectPermissions.map((permission) => [permission.role, permission])).values() + ...new Map( + mergedSelectPermissions.map((permission) => [ + permission.role, + permission, + ]) + ).values(), ]; } if (delete_permissions) { - const mergedDeletePermissions = [...(existingTable.delete_permissions ?? []), ...delete_permissions]; + const mergedDeletePermissions = [ + ...delete_permissions, + ...(existingTable.delete_permissions ?? []), + ]; + existingTable.delete_permissions = [ - ...new Map(mergedDeletePermissions.map((permission) => [permission.role, permission])).values() + ...new Map( + mergedDeletePermissions.map((permission) => [ + permission.role, + permission, + ]) + ).values(), ]; }