"use client"; import { Button } from "@app/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@app/components/ui/card"; import { Shield, ArrowRight } from "lucide-react"; import Link from "next/link"; import { useTranslations } from "next-intl"; import { useRouter } from "next/navigation"; import { createApiClient } from "@app/lib/api"; import { useEnvContext } from "@app/hooks/useEnvContext"; type OrgPolicyRequiredProps = { orgId: string; policies: { requiredTwoFactor?: boolean; maxSessionLength?: { compliant: boolean; maxSessionLengthHours: number; sessionAgeHours: number; }; passwordAge?: { compliant: boolean; maxPasswordAgeDays: number; passwordAgeDays: number; }; }; redirectAfterAuth?: string; }; export default function OrgPolicyRequired({ orgId, policies, redirectAfterAuth }: OrgPolicyRequiredProps) { const t = useTranslations(); const router = useRouter(); const api = createApiClient(useEnvContext()); const sessionExpired = policies?.maxSessionLength && policies.maxSessionLength.compliant === false; function reauthenticate() { api.post("/auth/logout") .catch(() => {}) .then(() => { const destination = redirectAfterAuth ?? `/${orgId}`; router.push(destination); router.refresh(); }); } if (sessionExpired) { return (
{t("sessionExpired")} {t("sessionExpiredReauthRequired")}
); } return (
{t("additionalSecurityRequired")} {t("organizationRequiresAdditionalSteps")}
); }