Passwort-Anmeldung: Provider, Formulare, drei Zustaende der Shell
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { EntraSignInButton } from "@/components/auth/EntraSignInButton";
|
||||
import { PasswortFormular } from "@/components/auth/PasswortFormular";
|
||||
import { logout, signInWithEntra } from "@/actions/auth";
|
||||
|
||||
// The query string is attacker-controlled, so the login page renders a message
|
||||
@@ -15,6 +16,15 @@ const ERROR_MESSAGES = {
|
||||
title: "Anmeldung fehlgeschlagen",
|
||||
body: "Die Anmeldung über das Firmenkonto konnte nicht abgeschlossen werden. Bitte versuchen Sie es erneut.",
|
||||
},
|
||||
// Auth.js' eigener Code für eine gescheiterte Passwortanmeldung. Im Regelfall
|
||||
// kommt er hier nicht an — die Server Action fängt den Fehlschlag ab und
|
||||
// zeigt ihn am Formular. Ohne diesen Eintrag fiele er aber auf `sso_failed`
|
||||
// zurück, und dort stünde „über das Firmenkonto", was mit dem tatsächlichen
|
||||
// Weg nichts zu tun hätte.
|
||||
CredentialsSignin: {
|
||||
title: "Anmeldung fehlgeschlagen",
|
||||
body: "E-Mail-Adresse oder Passwort stimmt nicht.",
|
||||
},
|
||||
} as const;
|
||||
|
||||
type ErrorCode = keyof typeof ERROR_MESSAGES;
|
||||
@@ -77,6 +87,20 @@ export default async function LoginPage({ searchParams }: LoginPageProps) {
|
||||
<EntraSignInButton />
|
||||
</form>
|
||||
|
||||
{/* Der Passwortweg steht bewusst *unter* dem Firmenkonto und ohne
|
||||
eigene Überschrift: er ist die Ausnahme für die Testphase, nicht
|
||||
die zweite gleichwertige Möglichkeit. Wer ein Firmenkonto hat,
|
||||
soll oben klicken. */}
|
||||
<div className="mt-6 flex items-center gap-3" aria-hidden>
|
||||
<span className="h-px flex-1 bg-border-subtle" />
|
||||
<span className="text-xs font-semibold uppercase tracking-wider text-ink-muted">oder</span>
|
||||
<span className="h-px flex-1 bg-border-subtle" />
|
||||
</div>
|
||||
|
||||
<div className="mt-6">
|
||||
<PasswortFormular />
|
||||
</div>
|
||||
|
||||
<p className="mt-6 border-t border-border-subtle pt-5 text-xs leading-relaxed text-ink-muted">
|
||||
Die Anmeldung allein erteilt keinen Zugriff. HR-Rechte vergibt die Personalabteilung — bis dahin bleiben alle
|
||||
Personaldaten verschlossen.
|
||||
|
||||
Reference in New Issue
Block a user