import Alert from "@mui/material/Alert"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; import CircularProgress from "@mui/material/CircularProgress"; import Typography from "@mui/material/Typography"; import { Navigate, Outlet, useLocation } from "react-router-dom"; import { hasAnyExternalCapability } from "../config/capabilities.js"; import { useExternalI18n } from "../i18n/ExternalI18nProvider.jsx"; import { translateExternalError } from "../i18n/errors.js"; import { useExternalAuth } from "./ExternalAuthProvider.jsx"; export function RequireExternalAuth() { const { initializationError, initializing, refresh, session } = useExternalAuth(); const { t } = useExternalI18n(); const location = useLocation(); if (initializing) { return ( {t("auth.checkingSession")} ); } if (!session) { if (initializationError) { return ( {translateExternalError(initializationError, t, "auth.sessionFailed")} ); } return ; } return ; } export function RequireExternalCapability({ anyOf }) { const { session } = useExternalAuth(); const { t } = useExternalI18n(); if (hasAnyExternalCapability(session, anyOf)) { return ; } return ( {t("auth.noPermission")} ); }