import Link from "next/link"; import { redirect } from "next/navigation"; import { AuthError } from "next-auth"; import { platformAuth, platformSignIn } from "@/server/platform-auth"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { CertviaLogo } from "@/components/brand/certvia-logo"; import { PoweredByGefim } from "@/components/brand/powered-by-gefim"; /** * Getrennter Login für Plattform-Administratoren (Phase-1-Härtung Paket 2). * Eigene Auth-Domäne, kein Mandantenkontext. TOTP-Code ist ab eingerichteter MFA * erforderlich (Feld optional, damit der erste Login zur Einrichtung durchläuft). */ export default async function PlatformLoginPage({ searchParams, }: { searchParams: Promise<{ error?: string }>; }) { const { error } = await searchParams; const session = await platformAuth(); if (session?.user?.id) redirect("/admin"); async function login(formData: FormData) { "use server"; try { await platformSignIn("credentials", { email: formData.get("email"), password: formData.get("password"), token: formData.get("token"), redirectTo: "/admin", }); } catch (err) { if (err instanceof AuthError) redirect("/platform/login?error=1"); throw err; // NEXT_REDIRECT eines erfolgreichen signIn muss durchlaufen } } return (

Plattform-Administration

Betreiberzugang — getrennt vom Mandanten-Login

{error && (

Anmeldung fehlgeschlagen. Bitte E-Mail, Passwort und — falls MFA eingerichtet — den 6-stelligen Code prüfen.

)}

Passwort vergessen?

); }