Fix risk mapping tabs permission handling

Signed-off-by: Émile Ré <nemile.re@gmail.com>
This commit is contained in:
Émile Ré
2026-01-02 11:46:34 +01:00
committed by Bryan Frimin
parent 4adb52cfc5
commit 9cc6d143f6
5 changed files with 176 additions and 65 deletions

View File

@@ -3,8 +3,7 @@ import { useOutletContext } from "react-router";
import { LinkedDocumentsCard } from "/components/documents/LinkedDocumentsCard";
import type { RiskDocumentsTabFragment$key } from "/__generated__/core/RiskDocumentsTabFragment.graphql";
import { useMutationWithIncrement } from "/hooks/useMutationWithIncrement";
import { use } from "react";
import { PermissionsContext } from "/providers/PermissionsContext";
import type { RiskGraphNodeQuery$data } from "/__generated__/core/RiskGraphNodeQuery.graphql";
export const documentsFragment = graphql`
fragment RiskDocumentsTabFragment on Risk {
@@ -50,15 +49,17 @@ export const detachDocumentMutation = graphql`
export default function RiskDocumentsTab() {
const { risk } = useOutletContext<{
risk: RiskDocumentsTabFragment$key & { id: string };
risk: RiskGraphNodeQuery$data["node"];
}>();
const data = useFragment(documentsFragment, risk);
const data = useFragment<RiskDocumentsTabFragment$key>(
documentsFragment,
risk,
);
const connectionId = data.documents.__id;
const documents = data.documents?.edges?.map((edge) => edge.node) ?? [];
const { isAuthorized } = use(PermissionsContext);
const canLinkDocument = isAuthorized("Risk", "createRiskDocumentMapping");
const canUnlinkDocument = isAuthorized("Risk", "deleteRiskDocumentMapping");
const canLinkDocument = risk.canCreateDocumentMapping;
const canUnlinkDocument = risk.canDeleteDocumentMapping;
const readOnly = !canLinkDocument && !canUnlinkDocument;
const incrementOptions = {

View File

@@ -3,8 +3,7 @@ import type { RiskMeasuresTabFragment$key } from "/__generated__/core/RiskMeasur
import { useOutletContext } from "react-router";
import { LinkedMeasuresCard } from "/components/measures/LinkedMeasuresCard";
import { useMutationWithIncrement } from "/hooks/useMutationWithIncrement";
import { use } from "react";
import { PermissionsContext } from "/providers/PermissionsContext";
import type { RiskGraphNodeQuery$data } from "/__generated__/core/RiskGraphNodeQuery.graphql";
export const measuresFragment = graphql`
fragment RiskMeasuresTabFragment on Risk {
@@ -50,15 +49,14 @@ export const detachMeasureMutation = graphql`
export default function RiskMeasuresTab() {
const { risk } = useOutletContext<{
risk: RiskMeasuresTabFragment$key & { id: string };
risk: RiskGraphNodeQuery$data["node"];
}>();
const data = useFragment(measuresFragment, risk);
const data = useFragment<RiskMeasuresTabFragment$key>(measuresFragment, risk);
const connectionId = data.measures.__id;
const measures = data.measures?.edges?.map((edge) => edge.node) ?? [];
const { isAuthorized } = use(PermissionsContext);
const canLinkMeasure = isAuthorized("Risk", "createRiskMeasureMapping");
const canUnlinkMeasure = isAuthorized("Risk", "deleteRiskMeasureMapping");
const canLinkMeasure = risk.canCreateMeasureMapping;
const canUnlinkMeasure = risk.canDeleteMeasureMapping;
const readOnly = !canLinkMeasure && !canUnlinkMeasure;
const incrementOptions = {

View File

@@ -3,8 +3,7 @@ import type { RiskObligationsTabFragment$key } from "/__generated__/core/RiskObl
import { useOutletContext } from "react-router";
import { LinkedObligationsCard } from "/components/obligations/LinkedObligationsCard";
import { useMutationWithIncrement } from "/hooks/useMutationWithIncrement";
import { use } from "react";
import { PermissionsContext } from "/providers/PermissionsContext";
import type { RiskGraphNodeQuery$data } from "/__generated__/core/RiskGraphNodeQuery.graphql";
export const obligationsFragment = graphql`
fragment RiskObligationsTabFragment on Risk {
@@ -50,18 +49,17 @@ export const detachObligationMutation = graphql`
export default function RiskObligationsTab() {
const { risk } = useOutletContext<{
risk: RiskObligationsTabFragment$key & { id: string };
risk: RiskGraphNodeQuery$data["node"];
}>();
const data = useFragment(obligationsFragment, risk);
const data = useFragment<RiskObligationsTabFragment$key>(
obligationsFragment,
risk,
);
const connectionId = data.obligations.__id;
const obligations = data.obligations?.edges?.map((edge) => edge.node) ?? [];
const { isAuthorized } = use(PermissionsContext);
const canLinkObligation = isAuthorized("Risk", "createRiskObligationMapping");
const canUnlinkObligation = isAuthorized(
"Risk",
"deleteRiskObligationMapping",
);
const canLinkObligation = risk.canCreateObligationMapping;
const canUnlinkObligation = risk.canDeleteObligationMapping;
const readOnly = !canLinkObligation && !canUnlinkObligation;
const incrementOptions = {