"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 { useState } from "react"; import { logoutProxy } from "@app/actions/server"; 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 [loading, setLoading] = useState(false); const sessionExpired = policies?.maxSessionLength && policies.maxSessionLength.compliant === false; async function reauthenticate() { setLoading(true); try { await logoutProxy(); } catch (error) { console.error("Error during logout:", error); } finally { const destination = redirectAfterAuth ?? `/${orgId}`; router.push(destination); router.refresh(); } } if (sessionExpired) { return (
{t("sessionExpired")} {t("sessionExpiredReauthRequired")}
); } return (
{t("additionalSecurityRequired")} {t("organizationRequiresAdditionalSteps")}
); }