Skip to content

Commit

Permalink
fix(deployment): check permission in loader (#387)
Browse files Browse the repository at this point in the history
  • Loading branch information
balzdur authored Feb 27, 2024
1 parent 06b9e0c commit c2cf000
Showing 1 changed file with 18 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,22 @@ export const handle = {

export async function loader({ request, params }: LoaderFunctionArgs) {
const { authService } = serverServices;
const { scenario } = await authService.isAuthenticated(request, {
const { scenario, user } = await authService.isAuthenticated(request, {
failureRedirect: getRoute('/sign-in'),
});

const scenarioId = fromParams(params, 'scenarioId');
const iterationId = fromParams(params, 'iterationId');

if (!user.permissions.canPublishScenario) {
return json({
withDeploymentActions: false as const,
scenarioIterations: await scenario.listScenarioIterations({
scenarioId,
}),
});
}

const [scenarioIterations, publicationPreparationStatus] = await Promise.all([
scenario.listScenarioIterations({
scenarioId,
Expand All @@ -55,6 +64,7 @@ export async function loader({ request, params }: LoaderFunctionArgs) {
]);

return json({
withDeploymentActions: true as const,
scenarioIterations,
publicationPreparationStatus,
});
Expand All @@ -64,9 +74,9 @@ export default function ScenarioEditLayout() {
const { t } = useTranslation(handle.i18n);
const currentScenario = useCurrentScenario();
const scenarioValidation = useCurrentScenarioValidation();
const { scenarioIterations, publicationPreparationStatus } =
useLoaderData<typeof loader>();
const { canManageScenario, canPublishScenario } = usePermissionsContext();
const loaderData = useLoaderData<typeof loader>();
const { canManageScenario } = usePermissionsContext();
const { scenarioIterations } = loaderData;

const sortedScenarioIterations = sortScenarioIterations(
scenarioIterations,
Expand All @@ -88,7 +98,6 @@ export default function ScenarioEditLayout() {
const withEditTag = editorMode === 'edit';
const withCreateDraftIteration =
canManageScenario && currentIteration.type !== 'draft';
const withDeploymentActions = canPublishScenario;

return (
<Page.Container>
Expand Down Expand Up @@ -126,7 +135,7 @@ export default function ScenarioEditLayout() {
draftId={draftIteration?.id}
/>
) : null}
{withDeploymentActions ? (
{loaderData.withDeploymentActions ? (
<DeploymentActions
scenario={{
id: currentScenario.id,
Expand All @@ -139,10 +148,11 @@ export default function ScenarioEditLayout() {
!hasTriggerErrors(scenarioValidation) &&
!hasRulesErrors(scenarioValidation) &&
!hasDecisionErrors(scenarioValidation),
status: publicationPreparationStatus.status,
status: loaderData.publicationPreparationStatus.status,
}}
isPreparationServiceOccupied={
publicationPreparationStatus.serviceStatus === 'occupied'
loaderData.publicationPreparationStatus.serviceStatus ===
'occupied'
}
/>
) : null}
Expand Down

0 comments on commit c2cf000

Please sign in to comment.