grant permissions

This commit is contained in:
x032205
2025-12-07 22:26:41 -05:00
parent 2fe316c81c
commit bfb682b715
5 changed files with 104 additions and 12 deletions
@@ -233,6 +233,11 @@ export enum ProjectPermissionApprovalRequestActions {
Create = "create"
}
export enum ProjectPermissionApprovalRequestGrantActions {
Read = "read",
Revoke = "revoke"
}
export type IdentityManagementSubjectFields = {
identityId: string;
};
@@ -345,7 +350,8 @@ export enum ProjectPermissionSub {
PamResources = "pam-resources",
PamAccounts = "pam-accounts",
PamSessions = "pam-sessions",
ApprovalRequests = "approval-requests"
ApprovalRequests = "approval-requests",
ApprovalRequestGrants = "approval-request-grants"
}
export type SecretSubjectFields = {
@@ -584,6 +590,7 @@ export type ProjectPermissionSet =
)
]
| [ProjectPermissionPamSessionActions, ProjectPermissionSub.PamSessions]
| [ProjectPermissionApprovalRequestActions, ProjectPermissionSub.ApprovalRequests];
| [ProjectPermissionApprovalRequestActions, ProjectPermissionSub.ApprovalRequests]
| [ProjectPermissionApprovalRequestGrantActions, ProjectPermissionSub.ApprovalRequestGrants];
export type TProjectPermission = MongoAbility<ProjectPermissionSet>;
@@ -16,6 +16,7 @@ import {
PermissionConditionOperators,
ProjectPermissionAppConnectionActions,
ProjectPermissionApprovalRequestActions,
ProjectPermissionApprovalRequestGrantActions,
ProjectPermissionAuditLogsActions,
ProjectPermissionCommitsActions,
ProjectPermissionDynamicSecretActions,
@@ -264,6 +265,11 @@ const ApprovalRequestPolicyActionSchema = z.object({
[ProjectPermissionApprovalRequestActions.Create]: z.boolean().optional()
});
const ApprovalRequestGrantPolicyActionSchema = z.object({
[ProjectPermissionApprovalRequestGrantActions.Read]: z.boolean().optional(),
[ProjectPermissionApprovalRequestGrantActions.Revoke]: z.boolean().optional()
});
const SecretRollbackPolicyActionSchema = z.object({
read: z.boolean().optional(),
create: z.boolean().optional()
@@ -475,7 +481,11 @@ export const projectRoleFormSchema = z.object({
.array()
.default([]),
[ProjectPermissionSub.PamSessions]: PamSessionPolicyActionSchema.array().default([]),
[ProjectPermissionSub.ApprovalRequests]: ApprovalRequestPolicyActionSchema.array().default([])
[ProjectPermissionSub.ApprovalRequests]: ApprovalRequestPolicyActionSchema.array().default(
[]
),
[ProjectPermissionSub.ApprovalRequestGrants]:
ApprovalRequestGrantPolicyActionSchema.array().default([])
})
.partial()
.optional()
@@ -1306,6 +1316,17 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => {
if (canRead) formVal[subject]![0][ProjectPermissionApprovalRequestActions.Read] = true;
if (canCreate) formVal[subject]![0][ProjectPermissionApprovalRequestActions.Create] = true;
}
if (subject === ProjectPermissionSub.ApprovalRequestGrants) {
const canRead = action.includes(ProjectPermissionApprovalRequestGrantActions.Read);
const canRevoke = action.includes(ProjectPermissionApprovalRequestGrantActions.Revoke);
if (!formVal[subject]) formVal[subject] = [{}];
if (canRead) formVal[subject]![0][ProjectPermissionApprovalRequestGrantActions.Read] = true;
if (canRevoke)
formVal[subject]![0][ProjectPermissionApprovalRequestGrantActions.Revoke] = true;
}
});
return formVal;
@@ -1982,6 +2003,13 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = {
{ label: "Read", value: ProjectPermissionApprovalRequestActions.Read },
{ label: "Create", value: ProjectPermissionApprovalRequestActions.Create }
]
},
[ProjectPermissionSub.ApprovalRequestGrants]: {
title: "Approval Request Grants",
actions: [
{ label: "Read", value: ProjectPermissionApprovalRequestGrantActions.Read },
{ label: "Revoke", value: ProjectPermissionApprovalRequestGrantActions.Revoke }
]
}
};
@@ -1993,7 +2021,8 @@ const SharedPermissionSubjects = {
[ProjectPermissionSub.Project]: true,
[ProjectPermissionSub.Role]: true,
[ProjectPermissionSub.Settings]: true,
[ProjectPermissionSub.ApprovalRequests]: true
[ProjectPermissionSub.ApprovalRequests]: true,
[ProjectPermissionSub.ApprovalRequestGrants]: true
};
const SecretsManagerPermissionSubjects = (enabled = false) => ({