mirror of
https://github.com/sartography/spiffworkflow-frontend.git
synced 2025-02-23 19:58:25 +00:00
allow disabling the permission check for the Create New Instance page to improve performance.
This commit is contained in:
parent
ab929fcaa9
commit
bef4add43b
@ -68,12 +68,14 @@ type OwnProps = {
|
|||||||
processModel: ProcessModel;
|
processModel: ProcessModel;
|
||||||
onSuccessCallback: Function;
|
onSuccessCallback: Function;
|
||||||
className?: string;
|
className?: string;
|
||||||
|
checkPermissions?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function ProcessInstanceRun({
|
export default function ProcessInstanceRun({
|
||||||
processModel,
|
processModel,
|
||||||
onSuccessCallback,
|
onSuccessCallback,
|
||||||
className,
|
className,
|
||||||
|
checkPermissions = true,
|
||||||
}: OwnProps) {
|
}: OwnProps) {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const setErrorMessage = (useContext as any)(ErrorContext)[1];
|
const setErrorMessage = (useContext as any)(ErrorContext)[1];
|
||||||
@ -82,9 +84,14 @@ export default function ProcessInstanceRun({
|
|||||||
);
|
);
|
||||||
|
|
||||||
const processInstanceActionPath = `/v1.0/process-models/${modifiedProcessModelId}/process-instances`;
|
const processInstanceActionPath = `/v1.0/process-models/${modifiedProcessModelId}/process-instances`;
|
||||||
const permissionRequestData: PermissionsToCheck = {
|
let permissionRequestData: PermissionsToCheck = {
|
||||||
[processInstanceActionPath]: ['POST'],
|
[processInstanceActionPath]: ['POST'],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (!checkPermissions) {
|
||||||
|
permissionRequestData = {};
|
||||||
|
}
|
||||||
|
|
||||||
const { ability } = usePermissionFetcher(permissionRequestData);
|
const { ability } = usePermissionFetcher(permissionRequestData);
|
||||||
|
|
||||||
const onProcessInstanceRun = (processInstance: any) => {
|
const onProcessInstanceRun = (processInstance: any) => {
|
||||||
@ -115,12 +122,18 @@ export default function ProcessInstanceRun({
|
|||||||
httpMethod: 'POST',
|
httpMethod: 'POST',
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
if (checkPermissions) {
|
||||||
|
return (
|
||||||
|
<Can I="POST" a={processInstanceActionPath} ability={ability}>
|
||||||
|
<Button onClick={processInstanceCreateAndRun} className={className}>
|
||||||
|
Start
|
||||||
|
</Button>
|
||||||
|
</Can>
|
||||||
|
);
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<Can I="POST" a={processInstanceActionPath} ability={ability}>
|
<Button onClick={processInstanceCreateAndRun} className={className}>
|
||||||
<Button onClick={processInstanceCreateAndRun} className={className}>
|
Start
|
||||||
Start
|
</Button>
|
||||||
</Button>
|
|
||||||
</Can>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -15,11 +15,13 @@ import ProcessInstanceRun from './ProcessInstanceRun';
|
|||||||
type OwnProps = {
|
type OwnProps = {
|
||||||
headerElement?: ReactElement;
|
headerElement?: ReactElement;
|
||||||
processGroup?: ProcessGroup;
|
processGroup?: ProcessGroup;
|
||||||
|
checkPermissions?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function ProcessModelListTiles({
|
export default function ProcessModelListTiles({
|
||||||
headerElement,
|
headerElement,
|
||||||
processGroup,
|
processGroup,
|
||||||
|
checkPermissions = true,
|
||||||
}: OwnProps) {
|
}: OwnProps) {
|
||||||
const [searchParams] = useSearchParams();
|
const [searchParams] = useSearchParams();
|
||||||
const [processModels, setProcessModels] = useState<ProcessModel[] | null>(
|
const [processModels, setProcessModels] = useState<ProcessModel[] | null>(
|
||||||
@ -94,6 +96,7 @@ export default function ProcessModelListTiles({
|
|||||||
processModel={row}
|
processModel={row}
|
||||||
onSuccessCallback={setProcessInstance}
|
onSuccessCallback={setProcessInstance}
|
||||||
className="tile-pin-bottom"
|
className="tile-pin-bottom"
|
||||||
|
checkPermissions={checkPermissions}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</Tile>
|
</Tile>
|
||||||
|
@ -37,13 +37,14 @@ export const usePermissionFetcher = (
|
|||||||
ability.update(rules);
|
ability.update(rules);
|
||||||
setPermissionsLoaded(true);
|
setPermissionsLoaded(true);
|
||||||
};
|
};
|
||||||
|
if (Object.keys(permissionsToCheck).length !== 0) {
|
||||||
HttpService.makeCallToBackend({
|
HttpService.makeCallToBackend({
|
||||||
path: `/permissions-check`,
|
path: `/permissions-check`,
|
||||||
httpMethod: 'POST',
|
httpMethod: 'POST',
|
||||||
successCallback: processPermissionResult,
|
successCallback: processPermissionResult,
|
||||||
postBody: { requests_to_check: permissionsToCheck },
|
postBody: { requests_to_check: permissionsToCheck },
|
||||||
});
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return { ability, permissionsLoaded };
|
return { ability, permissionsLoaded };
|
||||||
|
@ -2,6 +2,9 @@ import ProcessModelListTiles from '../components/ProcessModelListTiles';
|
|||||||
|
|
||||||
export default function CreateNewInstance() {
|
export default function CreateNewInstance() {
|
||||||
return (
|
return (
|
||||||
<ProcessModelListTiles headerElement={<h2>Processes I can start</h2>} />
|
<ProcessModelListTiles
|
||||||
|
headerElement={<h2>Processes I can start</h2>}
|
||||||
|
checkPermissions={false}
|
||||||
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user