Fix live test follow-up issues
This commit is contained in:
@@ -18,6 +18,7 @@ import { signIn } from "@/auth";
|
||||
const loginSchema = z.object({
|
||||
email: z.string().email("Bitte eine gültige E-Mail-Adresse angeben.").toLowerCase().trim(),
|
||||
password: z.string().min(1, "Passwort fehlt."),
|
||||
callbackUrl: z.string().optional(),
|
||||
});
|
||||
|
||||
export type LoginState = {
|
||||
@@ -28,6 +29,12 @@ export type LoginState = {
|
||||
};
|
||||
};
|
||||
|
||||
function safeCallbackUrl(value: string | undefined) {
|
||||
if (!value) return "/dashboard";
|
||||
if (!value.startsWith("/") || value.startsWith("//")) return "/dashboard";
|
||||
return value;
|
||||
}
|
||||
|
||||
export async function loginAction(
|
||||
_prev: LoginState,
|
||||
formData: FormData,
|
||||
@@ -37,16 +44,13 @@ export async function loginAction(
|
||||
return { errors: parsed.error.flatten().fieldErrors };
|
||||
}
|
||||
const { email, password } = parsed.data;
|
||||
const redirectTo = safeCallbackUrl(parsed.data.callbackUrl);
|
||||
|
||||
try {
|
||||
await signIn("credentials", {
|
||||
email,
|
||||
password,
|
||||
// Auth-Utils entscheiden im Folge-Render, ob /onboarding oder /dashboard.
|
||||
// Wir landen aus Sicherheitsgründen erstmal generisch auf der Wurzel.
|
||||
// Der Proxy (proxy.ts) übernimmt das Routing:
|
||||
// → /onboarding wenn kein kitaId, → /dashboard wenn vorhanden.
|
||||
redirectTo: "/",
|
||||
redirectTo,
|
||||
});
|
||||
} catch (err) {
|
||||
// signIn wirft NEXT_REDIRECT bei Erfolg → das müssen wir bewusst
|
||||
|
||||
Reference in New Issue
Block a user