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")}
);
}