import type { Metadata } from "next"; import { redirect } from "next/navigation"; import { Status } from "@/components/status"; import { Symbol, Wortmarke } from "@/components/wortmarke"; import { oidcEinstellungen } from "@/server/auth/oidc"; import { aktuellerBenutzer } from "@/server/auth/zugang"; import { Anmeldeformular } from "./anmeldeformular"; export const metadata: Metadata = { title: "Anmelden" }; /** Nur relative Ziele innerhalb der Anwendung – sonst wäre `?ziel=` eine offene Weiterleitung. */ function sicheresZiel(ziel: string | string[] | undefined): string { return typeof ziel === "string" && ziel.startsWith("/") && !ziel.startsWith("//") ? ziel : "/"; } const SSO_MELDUNGEN: Record = { abgelaufen: "Die SSO-Anmeldung hat zu lange gedauert. Bitte noch einmal.", idp: "Der Identity Provider hat die Anmeldung nicht bestätigt.", keine_gruppe: "Dein SSO-Konto ist für ProxDeploy nicht freigegeben – es fehlt die Gruppe.", gesperrt: "Dein Konto ist gesperrt.", name_vergeben: "Für dein SSO-Konto ließ sich kein Benutzername vergeben.", aus: "Die Anmeldung per SSO ist nicht eingerichtet.", }; export default async function Anmelden({ searchParams, }: { searchParams: Promise>; }) { const parameter = await searchParams; const ziel = sicheresZiel(parameter["ziel"]); const sso = oidcEinstellungen(); const ssoFehler = typeof parameter["sso"] === "string" ? (SSO_MELDUNGEN[parameter["sso"]] ?? SSO_MELDUNGEN["idp"]) : null; if (await aktuellerBenutzer()) redirect(ziel); return (

VMs und LXC-Container auf Proxmox VE ausrollen

{ssoFehler ? ( {ssoFehler} ) : null} {sso ? ( ) : null}
); }