import { Alert, AlertTitle, Box, Container, ListItemProps, Paper, Stack, Table, TableCell, TableHead, TableRow, Typography, } from "@mui/material"; import Markdown from "markdown-to-jsx"; import React, { FC } from "react"; import { CheckCircle, MinusCircle, XCircle } from "react-feather"; import { ErrorPageData, PolicyEvaluationTrace } from "../types"; import SectionFooter from "./SectionFooter"; type PolicyEvaluationTraceDetailsProps = { trace: PolicyEvaluationTrace; } & ListItemProps; const PolicyEvaluationTraceDetails: FC = ({ trace, }) => { return ( {trace.deny ? ( ) : trace.allow ? ( ) : ( )} {trace.explanation || `Policy ID ${trace.id}`} {trace.deny || !trace.allow ? trace.remediation : ""} ); }; export type ErrorPageProps = { data: ErrorPageData; }; export const ErrorPage: FC = ({ data }) => { const traces = data?.policyEvaluationTraces?.filter((trace) => !!trace.id) || []; const status = data?.status || 500; return ( = 300 ? "error" : "success"} > {status} {data?.statusText || "Internal Server Error"} {data?.description ? ( {data.description} ) : ( <> )} {!!data?.errorMessageFirstParagraph && ( {data.errorMessageFirstParagraph} )} {traces?.length > 0 && ( Outcome Explanation Remediation {traces.map((trace) => ( ))}
)} {data?.requestId ? ( If you should have access, contact your administrator with your request id {data?.requestId}. ) : ( <> )}
); }; export default ErrorPage;