mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-08 14:28:20 +00:00
Improve list endpoints permissions check and address PR comments
This commit is contained in:
@@ -391,8 +391,6 @@ export type CertificateSubjectFields = {
|
||||
commonName?: string;
|
||||
altNames?: string;
|
||||
serialNumber?: string;
|
||||
friendlyName?: string;
|
||||
status?: string;
|
||||
};
|
||||
|
||||
export type CertificateProfileSubjectFields = {
|
||||
|
||||
@@ -93,7 +93,6 @@ const Page = () => {
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Read}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, {
|
||||
caId: data.id,
|
||||
name: data.name
|
||||
})}
|
||||
>
|
||||
@@ -128,7 +127,6 @@ const Page = () => {
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Delete}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, {
|
||||
caId: data.id,
|
||||
name: data.name
|
||||
})}
|
||||
>
|
||||
|
||||
+3
-3
@@ -42,7 +42,7 @@ export const CaDetailsSection = ({ caId, handlePopUpOpen }: Props) => {
|
||||
<h3 className="text-lg font-medium text-mineshaft-100">CA Details</h3>
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Edit}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, { caId: ca.id, name: ca.name })}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, { name: ca.name })}
|
||||
>
|
||||
{(isAllowed) => {
|
||||
return (
|
||||
@@ -159,7 +159,7 @@ export const CaDetailsSection = ({ caId, handlePopUpOpen }: Props) => {
|
||||
{ca.status === CaStatus.ACTIVE && (
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Renew}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, { caId: ca.id, name: ca.name })}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, { name: ca.name })}
|
||||
>
|
||||
{(isAllowed) => {
|
||||
return (
|
||||
@@ -195,7 +195,7 @@ export const CaDetailsSection = ({ caId, handlePopUpOpen }: Props) => {
|
||||
{ca.status === CaStatus.PENDING_CERTIFICATE && (
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Create}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, { caId: ca.id, name: ca.name })}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, { name: ca.name })}
|
||||
>
|
||||
{(isAllowed) => {
|
||||
return (
|
||||
|
||||
@@ -104,6 +104,7 @@ export const CaSection = () => {
|
||||
: "This action will prevent the CA from issuing new certificates."
|
||||
}
|
||||
onChange={(isOpen) => handlePopUpToggle("caStatus", isOpen)}
|
||||
buttonText="Confirm"
|
||||
deleteKey="confirm"
|
||||
onDeleteApproved={() =>
|
||||
onUpdateCaStatus(popUp?.caStatus?.data as { caId: string; status: CaStatus })
|
||||
|
||||
@@ -81,7 +81,6 @@ export const CaTable = ({ handlePopUpOpen }: Props) => {
|
||||
const canReadCa = permission.can(
|
||||
ProjectPermissionCertificateAuthorityActions.Read,
|
||||
subject(ProjectPermissionSub.CertificateAuthorities, {
|
||||
caId: ca.id,
|
||||
name: ca.name
|
||||
})
|
||||
);
|
||||
@@ -136,7 +135,6 @@ export const CaTable = ({ handlePopUpOpen }: Props) => {
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Create}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, {
|
||||
caId: ca.id,
|
||||
name: ca.name
|
||||
})}
|
||||
>
|
||||
@@ -164,7 +162,6 @@ export const CaTable = ({ handlePopUpOpen }: Props) => {
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Read}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, {
|
||||
caId: ca.id,
|
||||
name: ca.name
|
||||
})}
|
||||
>
|
||||
@@ -192,7 +189,6 @@ export const CaTable = ({ handlePopUpOpen }: Props) => {
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Edit}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, {
|
||||
caId: ca.id,
|
||||
name: ca.name
|
||||
})}
|
||||
>
|
||||
@@ -223,7 +219,6 @@ export const CaTable = ({ handlePopUpOpen }: Props) => {
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Delete}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, {
|
||||
caId: ca.id,
|
||||
name: ca.name
|
||||
})}
|
||||
>
|
||||
|
||||
-4
@@ -75,7 +75,6 @@ export const ExternalCaTable = ({ handlePopUpOpen }: Props) => {
|
||||
const canReadCa = permission.can(
|
||||
ProjectPermissionCertificateAuthorityActions.Read,
|
||||
subject(ProjectPermissionSub.CertificateAuthorities, {
|
||||
caId: ca.id,
|
||||
name: ca.name
|
||||
})
|
||||
);
|
||||
@@ -117,7 +116,6 @@ export const ExternalCaTable = ({ handlePopUpOpen }: Props) => {
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Edit}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, {
|
||||
caId: ca.id,
|
||||
name: ca.name
|
||||
})}
|
||||
>
|
||||
@@ -145,7 +143,6 @@ export const ExternalCaTable = ({ handlePopUpOpen }: Props) => {
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Edit}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, {
|
||||
caId: ca.id,
|
||||
name: ca.name
|
||||
})}
|
||||
>
|
||||
@@ -177,7 +174,6 @@ export const ExternalCaTable = ({ handlePopUpOpen }: Props) => {
|
||||
<ProjectPermissionCan
|
||||
I={ProjectPermissionCertificateAuthorityActions.Delete}
|
||||
a={subject(ProjectPermissionSub.CertificateAuthorities, {
|
||||
caId: ca.id,
|
||||
name: ca.name
|
||||
})}
|
||||
>
|
||||
|
||||
-2
@@ -67,7 +67,6 @@ export const PkiSyncRow = ({
|
||||
const navigate = useNavigate();
|
||||
const {
|
||||
id,
|
||||
subscriberId,
|
||||
lastSyncMessage,
|
||||
destination,
|
||||
lastSyncedAt,
|
||||
@@ -117,7 +116,6 @@ export const PkiSyncRow = ({
|
||||
const destinationDetails = PKI_SYNC_MAP[destination];
|
||||
|
||||
const permissionSubject = subject(ProjectPermissionSub.PkiSyncs, {
|
||||
subscriberId: subscriberId || "",
|
||||
subscriberName: destinationName,
|
||||
name
|
||||
});
|
||||
|
||||
+1
-2
@@ -53,7 +53,7 @@ type Props = {
|
||||
};
|
||||
|
||||
export const PkiSyncActionTriggers = ({ pkiSync }: Props) => {
|
||||
const { destination, subscriberId, projectId, id } = pkiSync;
|
||||
const { destination, projectId, id } = pkiSync;
|
||||
|
||||
const navigate = useNavigate();
|
||||
const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp([
|
||||
@@ -112,7 +112,6 @@ export const PkiSyncActionTriggers = ({ pkiSync }: Props) => {
|
||||
}, [updatePkiSyncMutation, id, projectId, pkiSync.isAutoSyncEnabled]);
|
||||
|
||||
const permissionSubject = subject(ProjectPermissionSub.PkiSyncs, {
|
||||
subscriberId: subscriberId || "",
|
||||
subscriberName: destinationName,
|
||||
name: pkiSync.name
|
||||
});
|
||||
|
||||
-1
@@ -88,7 +88,6 @@ export const PkiSyncCertificatesSection = ({ pkiSync }: Props) => {
|
||||
const destinationName = PKI_SYNC_MAP[pkiSync.destination].name;
|
||||
|
||||
const permissionSubject = subject(ProjectPermissionSub.PkiSyncs, {
|
||||
subscriberId: pkiSync.subscriberId || "",
|
||||
subscriberName: destinationName,
|
||||
name: pkiSync.name
|
||||
});
|
||||
|
||||
+1
-2
@@ -31,7 +31,7 @@ type Props = {
|
||||
};
|
||||
|
||||
export const PkiSyncDestinationSection = ({ pkiSync, onEditDestination }: Props) => {
|
||||
const { destination, subscriberId } = pkiSync;
|
||||
const { destination } = pkiSync;
|
||||
|
||||
const destinationDetails = PKI_SYNC_MAP[destination];
|
||||
|
||||
@@ -55,7 +55,6 @@ export const PkiSyncDestinationSection = ({ pkiSync, onEditDestination }: Props)
|
||||
}
|
||||
|
||||
const permissionSubject = subject(ProjectPermissionSub.PkiSyncs, {
|
||||
subscriberId: subscriberId || "",
|
||||
subscriberName: destinationDetails.name,
|
||||
name: pkiSync.name
|
||||
});
|
||||
|
||||
+1
-3
@@ -34,8 +34,7 @@ type Props = {
|
||||
};
|
||||
|
||||
export const PkiSyncDetailsSection = ({ pkiSync, onEditDetails }: Props) => {
|
||||
const { syncStatus, lastSyncMessage, lastSyncedAt, name, description, subscriberId, subscriber } =
|
||||
pkiSync;
|
||||
const { syncStatus, lastSyncMessage, lastSyncedAt, name, description, subscriber } = pkiSync;
|
||||
|
||||
const failureMessage = useMemo(() => {
|
||||
if (syncStatus === PkiSyncStatus.Failed) {
|
||||
@@ -54,7 +53,6 @@ export const PkiSyncDetailsSection = ({ pkiSync, onEditDetails }: Props) => {
|
||||
const destinationName = PKI_SYNC_MAP[pkiSync.destination].name;
|
||||
|
||||
const permissionSubject = subject(ProjectPermissionSub.PkiSyncs, {
|
||||
subscriberId: subscriber?.id || subscriberId || "",
|
||||
subscriberName: destinationName,
|
||||
name: pkiSync.name
|
||||
});
|
||||
|
||||
-1
@@ -39,7 +39,6 @@ export const PkiSyncFieldMappingsSection = ({ pkiSync, onEditMappings }: Props)
|
||||
const destinationName = PKI_SYNC_MAP[pkiSync.destination].name;
|
||||
|
||||
const permissionSubject = subject(ProjectPermissionSub.PkiSyncs, {
|
||||
subscriberId: pkiSync.subscriberId || "",
|
||||
subscriberName: destinationName,
|
||||
name: pkiSync.name
|
||||
});
|
||||
|
||||
-1
@@ -38,7 +38,6 @@ export const PkiSyncOptionsSection = ({ pkiSync, onEditOptions }: Props) => {
|
||||
const destinationName = PKI_SYNC_MAP[pkiSync.destination].name;
|
||||
|
||||
const permissionSubject = subject(ProjectPermissionSub.PkiSyncs, {
|
||||
subscriberId: pkiSync.subscriberId || "",
|
||||
subscriberName: destinationName,
|
||||
name: pkiSync.name
|
||||
});
|
||||
|
||||
-1
@@ -30,7 +30,6 @@ export const PkiSyncSourceSection = ({ pkiSync, onEditSource }: Props) => {
|
||||
const destinationName = PKI_SYNC_MAP[pkiSync.destination].name;
|
||||
|
||||
const permissionSubject = subject(ProjectPermissionSub.PkiSyncs, {
|
||||
subscriberId: subscriberId || "",
|
||||
subscriberName: destinationName,
|
||||
name: pkiSync.name
|
||||
});
|
||||
|
||||
-1
@@ -14,7 +14,6 @@ export const CertificatePermissionConditions = ({ position = 0, isDisabled }: Pr
|
||||
subject={ProjectPermissionSub.Certificates}
|
||||
position={position}
|
||||
selectOptions={[
|
||||
{ value: "id", label: "Certificate ID" },
|
||||
{ value: "commonName", label: "Common Name" },
|
||||
{ value: "altNames", label: "Subject Alternative Names" },
|
||||
{ value: "serialNumber", label: "Serial Number" }
|
||||
|
||||
+1
@@ -36,6 +36,7 @@ export const renderOperatorSelectItems = (type: string) => {
|
||||
return (
|
||||
<>
|
||||
<SelectItem value={PermissionConditionOperators.$EQ}>Equal</SelectItem>
|
||||
<SelectItem value={PermissionConditionOperators.$NEQ}>Not Equal</SelectItem>
|
||||
<SelectItem value={PermissionConditionOperators.$GLOB}>Glob Match</SelectItem>
|
||||
<SelectItem value={PermissionConditionOperators.$IN}>In</SelectItem>
|
||||
</>
|
||||
|
||||
-17
@@ -57,7 +57,6 @@ const CertificatePolicyActionSchema = z.object({
|
||||
[ProjectPermissionCertificateActions.Delete]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateActions.Edit]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateActions.Read]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateActions.List]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateActions.ReadPrivateKey]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateActions.Import]: z.boolean().optional()
|
||||
});
|
||||
@@ -67,7 +66,6 @@ const CertificateAuthorityPolicyActionSchema = z.object({
|
||||
[ProjectPermissionCertificateAuthorityActions.Delete]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateAuthorityActions.Edit]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateAuthorityActions.Read]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateAuthorityActions.List]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateAuthorityActions.Renew]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateAuthorityActions.SignIntermediate]: z.boolean().optional()
|
||||
});
|
||||
@@ -123,7 +121,6 @@ const PkiSyncPolicyActionSchema = z.object({
|
||||
[ProjectPermissionPkiSyncActions.Create]: z.boolean().optional(),
|
||||
[ProjectPermissionPkiSyncActions.Edit]: z.boolean().optional(),
|
||||
[ProjectPermissionPkiSyncActions.Delete]: z.boolean().optional(),
|
||||
[ProjectPermissionPkiSyncActions.List]: z.boolean().optional(),
|
||||
[ProjectPermissionPkiSyncActions.SyncCertificates]: z.boolean().optional(),
|
||||
[ProjectPermissionPkiSyncActions.ImportCertificates]: z.boolean().optional(),
|
||||
[ProjectPermissionPkiSyncActions.RemoveCertificates]: z.boolean().optional()
|
||||
@@ -234,7 +231,6 @@ const PkiTemplatePolicyActionSchema = z.object({
|
||||
});
|
||||
const CertificateProfilePolicyActionSchema = z.object({
|
||||
[ProjectPermissionCertificateProfileActions.Read]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateProfileActions.List]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateProfileActions.Create]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateProfileActions.Edit]: z.boolean().optional(),
|
||||
[ProjectPermissionCertificateProfileActions.Delete]: z.boolean().optional(),
|
||||
@@ -696,7 +692,6 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => {
|
||||
const canEdit = action.includes(ProjectPermissionPkiSyncActions.Edit);
|
||||
const canDelete = action.includes(ProjectPermissionPkiSyncActions.Delete);
|
||||
const canCreate = action.includes(ProjectPermissionPkiSyncActions.Create);
|
||||
const canList = action.includes(ProjectPermissionPkiSyncActions.List);
|
||||
const canSyncCertificates = action.includes(
|
||||
ProjectPermissionPkiSyncActions.SyncCertificates
|
||||
);
|
||||
@@ -715,7 +710,6 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => {
|
||||
[ProjectPermissionPkiSyncActions.Create]: canCreate,
|
||||
[ProjectPermissionPkiSyncActions.Edit]: canEdit,
|
||||
[ProjectPermissionPkiSyncActions.Delete]: canDelete,
|
||||
[ProjectPermissionPkiSyncActions.List]: canList,
|
||||
[ProjectPermissionPkiSyncActions.SyncCertificates]: canSyncCertificates,
|
||||
[ProjectPermissionPkiSyncActions.ImportCertificates]: canImportCertificates,
|
||||
[ProjectPermissionPkiSyncActions.RemoveCertificates]: canRemoveCertificates,
|
||||
@@ -864,7 +858,6 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => {
|
||||
const canCreate = action.includes(ProjectPermissionCertificateAuthorityActions.Create);
|
||||
const canEdit = action.includes(ProjectPermissionCertificateAuthorityActions.Edit);
|
||||
const canDelete = action.includes(ProjectPermissionCertificateAuthorityActions.Delete);
|
||||
const canList = action.includes(ProjectPermissionCertificateAuthorityActions.List);
|
||||
const canRenew = action.includes(ProjectPermissionCertificateAuthorityActions.Renew);
|
||||
const canSignIntermediate = action.includes(
|
||||
ProjectPermissionCertificateAuthorityActions.SignIntermediate
|
||||
@@ -876,7 +869,6 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => {
|
||||
[ProjectPermissionCertificateAuthorityActions.Create]: canCreate,
|
||||
[ProjectPermissionCertificateAuthorityActions.Edit]: canEdit,
|
||||
[ProjectPermissionCertificateAuthorityActions.Delete]: canDelete,
|
||||
[ProjectPermissionCertificateAuthorityActions.List]: canList,
|
||||
[ProjectPermissionCertificateAuthorityActions.Renew]: canRenew,
|
||||
[ProjectPermissionCertificateAuthorityActions.SignIntermediate]: canSignIntermediate,
|
||||
conditions: conditions ? convertCaslConditionToFormOperator(conditions) : [],
|
||||
@@ -937,7 +929,6 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => {
|
||||
const canEdit = action.includes(ProjectPermissionCertificateActions.Edit);
|
||||
const canDelete = action.includes(ProjectPermissionCertificateActions.Delete);
|
||||
const canCreate = action.includes(ProjectPermissionCertificateActions.Create);
|
||||
const canList = action.includes(ProjectPermissionCertificateActions.List);
|
||||
const canImport = action.includes(ProjectPermissionCertificateActions.Import);
|
||||
const canReadPrivateKey = action.includes(ProjectPermissionCertificateActions.ReadPrivateKey);
|
||||
|
||||
@@ -949,7 +940,6 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => {
|
||||
[ProjectPermissionCertificateActions.Edit]: canEdit,
|
||||
[ProjectPermissionCertificateActions.Create]: canCreate,
|
||||
[ProjectPermissionCertificateActions.Delete]: canDelete,
|
||||
[ProjectPermissionCertificateActions.List]: canList,
|
||||
[ProjectPermissionCertificateActions.ReadPrivateKey]: canReadPrivateKey,
|
||||
[ProjectPermissionCertificateActions.Import]: canImport,
|
||||
conditions: conditions ? convertCaslConditionToFormOperator(conditions) : [],
|
||||
@@ -1250,9 +1240,6 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => {
|
||||
[ProjectPermissionCertificateProfileActions.Read]: action.includes(
|
||||
ProjectPermissionCertificateProfileActions.Read
|
||||
),
|
||||
[ProjectPermissionCertificateProfileActions.List]: action.includes(
|
||||
ProjectPermissionCertificateProfileActions.List
|
||||
),
|
||||
[ProjectPermissionCertificateProfileActions.IssueCert]: action.includes(
|
||||
ProjectPermissionCertificateProfileActions.IssueCert
|
||||
),
|
||||
@@ -1629,7 +1616,6 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = {
|
||||
title: "Certificate Authorities",
|
||||
actions: [
|
||||
{ label: "Read", value: ProjectPermissionCertificateAuthorityActions.Read },
|
||||
{ label: "List", value: ProjectPermissionCertificateAuthorityActions.List },
|
||||
{ label: "Create", value: ProjectPermissionCertificateAuthorityActions.Create },
|
||||
{ label: "Modify", value: ProjectPermissionCertificateAuthorityActions.Edit },
|
||||
{ label: "Remove", value: ProjectPermissionCertificateAuthorityActions.Delete },
|
||||
@@ -1644,7 +1630,6 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = {
|
||||
title: "Certificates",
|
||||
actions: [
|
||||
{ label: "Read", value: ProjectPermissionCertificateActions.Read },
|
||||
{ label: "List", value: ProjectPermissionCertificateActions.List },
|
||||
{ label: "Read Private Key", value: ProjectPermissionCertificateActions.ReadPrivateKey },
|
||||
// { label: "Create", value: ProjectPermissionCertificateActions.Create }, // Hidden from UI - kept for backend compatibility
|
||||
{ label: "Import", value: ProjectPermissionCertificateActions.Import },
|
||||
@@ -1666,7 +1651,6 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = {
|
||||
title: "Certificate Profiles",
|
||||
actions: [
|
||||
{ label: "Read", value: ProjectPermissionCertificateProfileActions.Read },
|
||||
{ label: "List", value: ProjectPermissionCertificateProfileActions.List },
|
||||
{ label: "Create", value: ProjectPermissionCertificateProfileActions.Create },
|
||||
{ label: "Modify", value: ProjectPermissionCertificateProfileActions.Edit },
|
||||
{ label: "Remove", value: ProjectPermissionCertificateProfileActions.Delete },
|
||||
@@ -1799,7 +1783,6 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = {
|
||||
title: "Certificate Syncs",
|
||||
actions: [
|
||||
{ label: "Read", value: ProjectPermissionPkiSyncActions.Read },
|
||||
{ label: "List", value: ProjectPermissionPkiSyncActions.List },
|
||||
{ label: "Create", value: ProjectPermissionPkiSyncActions.Create },
|
||||
{ label: "Modify", value: ProjectPermissionPkiSyncActions.Edit },
|
||||
{ label: "Remove", value: ProjectPermissionPkiSyncActions.Delete },
|
||||
|
||||
Reference in New Issue
Block a user