feat: add password recovery and everyday workflow improvements

This commit is contained in:
t.indorf
2026-10-12 17:51:50 +02:00
parent 061024d901
commit 661776e609
19 changed files with 1721 additions and 141 deletions
+52
View File
@@ -0,0 +1,52 @@
import Link from "next/link";
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from "@/components/ui/card";
import { isPasswordResetValid } from "@/lib/password-management";
import { PasswordForm } from "../../passwort-vergessen/password-form";
export const metadata = {
title: "Neues Passwort · Kita-Planer",
robots: { index: false, follow: false },
};
export default async function ResetPasswordPage({
params,
}: {
params: Promise<{ token: string }>;
}) {
const { token } = await params;
const valid = await isPasswordResetValid(token);
return (
<div className="flex min-h-screen items-center justify-center bg-[var(--bg)] px-5 py-12">
<Card className="w-full max-w-md">
<CardHeader>
<CardTitle>
{valid
? "Neues Passwort festlegen"
: "Dieser Link ist nicht mehr gültig"}
</CardTitle>
<CardDescription>
{valid
? "Wähle ein neues Passwort für dein Kita-Planer-Konto."
: "Der Link ist abgelaufen, wurde bereits verwendet oder ist ungültig. Du kannst einen neuen Link anfordern."}
</CardDescription>
</CardHeader>
<CardContent>
{valid ? (
<PasswordForm mode="reset" token={token} />
) : (
<Link
href="/passwort-vergessen"
className="text-sm font-semibold text-[var(--accent-deep)] underline underline-offset-4"
>
Neuen Link anfordern
</Link>
)}
</CardContent>
</Card>
</div>
);
}