From 0c3024819c838694cddc821af4b8dd4e9c3b33a7 Mon Sep 17 00:00:00 2001 From: = Date: Wed, 16 Oct 2024 11:14:21 +0530 Subject: [PATCH] feat: review comments over dynamic-secrets, folder read, neq removed in backend, contain in tag --- .../dynamic-secret/dynamic-secret-service.ts | 14 +++++++++----- backend/src/ee/services/license/license-fns.ts | 2 +- .../components/permissions/GlobPermissionInfo.tsx | 4 ++-- .../src/context/ProjectPermissionContext/types.ts | 4 ++-- .../ProjectRoleModifySection.utils.ts | 3 +-- .../components/GeneralPermissionConditions.tsx | 15 ++++++++------- .../components/SecretPermissionConditions.tsx | 11 +++++++++-- .../src/views/SecretMainPage/SecretMainPage.tsx | 2 +- 8 files changed, 33 insertions(+), 22 deletions(-) diff --git a/backend/src/ee/services/dynamic-secret/dynamic-secret-service.ts b/backend/src/ee/services/dynamic-secret/dynamic-secret-service.ts index d207df4ce..99bf84aa3 100644 --- a/backend/src/ee/services/dynamic-secret/dynamic-secret-service.ts +++ b/backend/src/ee/services/dynamic-secret/dynamic-secret-service.ts @@ -228,7 +228,7 @@ export const dynamicSecretServiceFactory = ({ actorOrgId ); ForbiddenError.from(permission).throwUnlessCan( - ProjectPermissionDynamicSecretActions.Edit, + ProjectPermissionDynamicSecretActions.Delete, subject(ProjectPermissionSub.DynamicSecrets, { environment: environmentSlug, secretPath: path }) ); @@ -284,6 +284,10 @@ export const dynamicSecretServiceFactory = ({ actorAuthMethod, actorOrgId ); + ForbiddenError.from(permission).throwUnlessCan( + ProjectPermissionDynamicSecretActions.Read, + subject(ProjectPermissionSub.DynamicSecrets, { environment: environmentSlug, secretPath: path }) + ); ForbiddenError.from(permission).throwUnlessCan( ProjectPermissionDynamicSecretActions.Edit, subject(ProjectPermissionSub.DynamicSecrets, { environment: environmentSlug, secretPath: path }) @@ -331,7 +335,7 @@ export const dynamicSecretServiceFactory = ({ // verify user has access to each env in request environmentSlugs.forEach((environmentSlug) => ForbiddenError.from(permission).throwUnlessCan( - ProjectPermissionDynamicSecretActions.Lease, + ProjectPermissionDynamicSecretActions.Read, subject(ProjectPermissionSub.DynamicSecrets, { environment: environmentSlug, secretPath: path }) ) ); @@ -367,7 +371,7 @@ export const dynamicSecretServiceFactory = ({ actorOrgId ); ForbiddenError.from(permission).throwUnlessCan( - ProjectPermissionDynamicSecretActions.Lease, + ProjectPermissionDynamicSecretActions.Read, subject(ProjectPermissionSub.DynamicSecrets, { environment: environmentSlug, secretPath: path }) ); @@ -413,7 +417,7 @@ export const dynamicSecretServiceFactory = ({ actorOrgId ); ForbiddenError.from(permission).throwUnlessCan( - ProjectPermissionDynamicSecretActions.Lease, + ProjectPermissionDynamicSecretActions.Read, subject(ProjectPermissionSub.DynamicSecrets, { environment: environmentSlug, secretPath: path }) ); @@ -455,7 +459,7 @@ export const dynamicSecretServiceFactory = ({ // verify user has access to each env in request environmentSlugs.forEach((environmentSlug) => ForbiddenError.from(permission).throwUnlessCan( - ProjectPermissionDynamicSecretActions.Lease, + ProjectPermissionDynamicSecretActions.Read, subject(ProjectPermissionSub.DynamicSecrets, { environment: environmentSlug, secretPath: path }) ) ); diff --git a/backend/src/ee/services/license/license-fns.ts b/backend/src/ee/services/license/license-fns.ts index fa67b72d1..7a1632f93 100644 --- a/backend/src/ee/services/license/license-fns.ts +++ b/backend/src/ee/services/license/license-fns.ts @@ -21,7 +21,7 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({ secretVersioning: true, pitRecovery: false, ipAllowlisting: false, - rbac: false, + rbac: true, customRateLimits: false, customAlerts: false, auditLogs: false, diff --git a/frontend/src/components/permissions/GlobPermissionInfo.tsx b/frontend/src/components/permissions/GlobPermissionInfo.tsx index 07ba42db3..b65b0c307 100644 --- a/frontend/src/components/permissions/GlobPermissionInfo.tsx +++ b/frontend/src/components/permissions/GlobPermissionInfo.tsx @@ -10,7 +10,7 @@ export const GlobPermissionInfo = () => { return (
-
A glob pattern uses wildcards to match file names or paths.
+
A glob pattern uses wildcards to match resources or paths.
setPattern(e.target.value)} /> @@ -19,7 +19,7 @@ export const GlobPermissionInfo = () => {
; export enum ProjectPermissionSub { diff --git a/frontend/src/views/Project/RolePage/components/RolePermissionsSection/ProjectRoleModifySection.utils.ts b/frontend/src/views/Project/RolePage/components/RolePermissionsSection/ProjectRoleModifySection.utils.ts index 7c145fd08..ec5f7b5a9 100644 --- a/frontend/src/views/Project/RolePage/components/RolePermissionsSection/ProjectRoleModifySection.utils.ts +++ b/frontend/src/views/Project/RolePage/components/RolePermissionsSection/ProjectRoleModifySection.utils.ts @@ -370,7 +370,6 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = { [ProjectPermissionSub.SecretFolders]: { title: "Secret Folders", actions: [ - { label: "Read", value: "read" }, { label: "Create", value: "create" }, { label: "Modify", value: "edit" }, { label: "Remove", value: "delete" } @@ -392,7 +391,7 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = { { label: "Create", value: "create" }, { label: "Modify", value: "edit" }, { label: "Remove", value: "delete" }, - { label: "Lease", value: "lease" } + { label: "Manage Leases", value: "lease" } ] }, [ProjectPermissionSub.Cmek]: { diff --git a/frontend/src/views/Project/RolePage/components/RolePermissionsSection/components/GeneralPermissionConditions.tsx b/frontend/src/views/Project/RolePage/components/RolePermissionsSection/components/GeneralPermissionConditions.tsx index 3d147c708..2ac518038 100644 --- a/frontend/src/views/Project/RolePage/components/RolePermissionsSection/components/GeneralPermissionConditions.tsx +++ b/frontend/src/views/Project/RolePage/components/RolePermissionsSection/components/GeneralPermissionConditions.tsx @@ -50,11 +50,12 @@ export const GeneralPermissionConditions = ({ position = 0, isDisabled, type }:

{items.fields.map((el, index) => { - const condition = watch(`permissions.secrets.${position}.conditions.${index}`) as { - lhs: string; - rhs: string; - operator: string; - }; + const condition = + (watch(`permissions.${type}.${position}.conditions.${index}`) as { + lhs: string; + rhs: string; + operator: string; + }) || {}; return (
( diff --git a/frontend/src/views/Project/RolePage/components/RolePermissionsSection/components/SecretPermissionConditions.tsx b/frontend/src/views/Project/RolePage/components/RolePermissionsSection/components/SecretPermissionConditions.tsx index b858545de..b742b829d 100644 --- a/frontend/src/views/Project/RolePage/components/RolePermissionsSection/components/SecretPermissionConditions.tsx +++ b/frontend/src/views/Project/RolePage/components/RolePermissionsSection/components/SecretPermissionConditions.tsx @@ -28,6 +28,7 @@ export const SecretPermissionConditions = ({ position = 0, isDisabled }: Props) const { control, watch, + setValue, formState: { errors } } = useFormContext(); const items = useFieldArray({ @@ -66,7 +67,13 @@ export const SecretPermissionConditions = ({ position = 0, isDisabled }: Props)