Passwort-Anmeldung: Provider, Formulare, drei Zustaende der Shell
This commit is contained in:
@@ -13,15 +13,24 @@ export default async function AppLayout({ children }: { children: ReactNode }) {
|
||||
// Alles in *einer* Transaktion, weil nur dort der Sitzungskontext gilt —
|
||||
// und damit nebenbei auf einem einheitlichen Lesestand. Was dabei in wie
|
||||
// vielen Rundreisen gelesen wird, steht in lib/shell-data.ts.
|
||||
const data = await withUser(userId, (tx) => loadShellData(tx, userId));
|
||||
const ergebnis = await withUser(userId, (tx) => loadShellData(tx, userId));
|
||||
|
||||
// `data` ist null, wenn die Person angemeldet, aber nicht freigeschaltet
|
||||
// ist. Hier — und nicht im Proxy — fällt diese Entscheidung: der Proxy hat
|
||||
// keine Datenbankverbindung. Sie wird bei jedem Aufbau frisch gestellt, eine
|
||||
// Hier — und nicht im Proxy — fällt diese Entscheidung: der Proxy hat keine
|
||||
// Datenbankverbindung. Sie wird bei jedem Aufbau frisch gestellt, eine
|
||||
// entzogene Freischaltung wirkt also sofort statt erst mit dem nächsten
|
||||
// Sitzungstoken. Ohne den Grund in der Adresse stünde die Person vor einer
|
||||
// wortlosen Anmeldeseite und versuchte es endlos erneut.
|
||||
if (!data) redirect("/login?error=no_hr_access");
|
||||
// Sitzungstoken.
|
||||
//
|
||||
// Beide Umleitungen sind Bedienkomfort, keine Absicherung: wer sie umgeht,
|
||||
// bekommt trotzdem keine Zeile, weil die RLS-Policies dieselbe Frage stellen
|
||||
// (is_hr_user()). Ohne sie stünde die Person nur vor einer leeren Anwendung
|
||||
// und wüsste nicht, warum.
|
||||
if (ergebnis.status === "passwort_wechseln") redirect("/passwort-aendern");
|
||||
|
||||
// Ohne den Grund in der Adresse stünde die Person vor einer wortlosen
|
||||
// Anmeldeseite und versuchte es endlos erneut.
|
||||
if (ergebnis.status === "kein_zugang") redirect("/login?error=no_hr_access");
|
||||
|
||||
const data = ergebnis.daten;
|
||||
|
||||
const userLabel = data.profile.full_name || data.profile.email || "";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user