From ec4f175f7383e7e377020ac85bf709e56be976f6 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 2 Oct 2024 19:06:02 +0530 Subject: [PATCH 1/3] feat: added a default empty array for create-identity --- .../OrgIdentityTab/components/IdentitySection/IdentityModal.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx index 5663c26d5..5ef293b97 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx @@ -36,6 +36,7 @@ const schema = z value: z.string().trim().min(1) }) .array() + .default([]) .optional() }) .required(); From 40c589eced58db772e6a8e34bb8045eef091a618 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 2 Oct 2024 19:21:44 +0530 Subject: [PATCH 2/3] fix: update not getting the tag in identity modal --- .../components/IdentitySection/IdentityModal.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx index 5ef293b97..20eb49622 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgIdentityTab/components/IdentitySection/IdentityModal.tsx @@ -89,6 +89,7 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => { identityId: string; name: string; role: string; + metadata?: { key: string; value: string }[]; customRole: { name: string; slug: string; @@ -100,7 +101,8 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => { if (identity) { reset({ name: identity.name, - role: identity?.customRole?.slug ?? identity.role + role: identity?.customRole?.slug ?? identity.role, + metadata: identity.metadata }); } else { reset({ From 355113e15d2ead092fc8174f27feeb96fe20fe9d Mon Sep 17 00:00:00 2001 From: = Date: Wed, 2 Oct 2024 19:52:27 +0530 Subject: [PATCH 3/3] fix: changed least privilege check for identity for action array consideration --- backend/src/lib/casl/index.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/backend/src/lib/casl/index.ts b/backend/src/lib/casl/index.ts index 9e5cb29d3..71625e181 100644 --- a/backend/src/lib/casl/index.ts +++ b/backend/src/lib/casl/index.ts @@ -23,8 +23,19 @@ export const conditionsMatcher = buildMongoQueryMatcher({ $glob }, { glob }); /** * Extracts and formats permissions from a CASL Ability object or a raw permission set. */ -const extractPermissions = (ability: MongoAbility) => - ability.rules.map((permission) => `${permission.action as string}_${permission.subject as string}`); +const extractPermissions = (ability: MongoAbility) => { + const permissions: string[] = []; + ability.rules.forEach((permission) => { + if (typeof permission.action === "string") { + permissions.push(`${permission.action}_${permission.subject as string}`); + } else { + permission.action.forEach((permissionAction) => { + permissions.push(`${permissionAction}_${permission.subject as string}`); + }); + } + }); + return permissions; +}; /** * Compares two sets of permissions to determine if the first set is at least as privileged as the second set.