diff --git a/platforms/group-charter-manager-api/src/controllers/CharterSigningController.ts b/platforms/group-charter-manager-api/src/controllers/CharterSigningController.ts index 1e9736ed..327e7624 100644 --- a/platforms/group-charter-manager-api/src/controllers/CharterSigningController.ts +++ b/platforms/group-charter-manager-api/src/controllers/CharterSigningController.ts @@ -94,6 +94,10 @@ export class CharterSigningController { res.write(`data: ${JSON.stringify({ type: "expired" })}\n\n`); clearInterval(interval); res.end(); + } else if (session.status === "security_violation") { + res.write(`data: ${JSON.stringify({ type: "security_violation" })}\n\n`); + clearInterval(interval); + res.end(); } } else { res.write(`data: ${JSON.stringify({ type: "error", message: "Session not found" })}\n\n`); diff --git a/platforms/group-charter-manager/src/components/charter-signing-interface.tsx b/platforms/group-charter-manager/src/components/charter-signing-interface.tsx index ce18f633..5b537480 100644 --- a/platforms/group-charter-manager/src/components/charter-signing-interface.tsx +++ b/platforms/group-charter-manager/src/components/charter-signing-interface.tsx @@ -22,7 +22,7 @@ interface CharterSigningInterfaceProps { export function CharterSigningInterface({ groupId, charterData, onSigningComplete, onCancel, onSigningStatusUpdate }: CharterSigningInterfaceProps) { const [sessionId, setSessionId] = useState(null); const [qrData, setQrData] = useState(null); - const [status, setStatus] = useState<"pending" | "connecting" | "signed" | "expired" | "error">("pending"); + const [status, setStatus] = useState<"pending" | "connecting" | "signed" | "expired" | "error" | "security_violation">("pending"); const [timeRemaining, setTimeRemaining] = useState(900); // 15 minutes in seconds const [eventSource, setEventSource] = useState(null); const { toast } = useToast(); @@ -108,6 +108,13 @@ export function CharterSigningInterface({ groupId, charterData, onSigningComplet description: "The signing session has expired. Please try again.", variant: "destructive", }); + } else if (data.type === "security_violation") { + setStatus("security_violation"); + toast({ + title: "eName Verification Failed", + description: "eName verification failed. Please check your eID.", + variant: "destructive", + }); } else { console.log("SSE message:", data); } @@ -254,6 +261,31 @@ export function CharterSigningInterface({ groupId, charterData, onSigningComplet ); } + if (status === "security_violation") { + return ( + + + + + eName verification failed + + + eName verification failed + + + +
+

+ eName Mismatch: It appears that you are trying to sign with the wrong eName. + Please make sure you are signing with the right eID linked to this account. +

+
+ +
+
+ ); + } + return (