feat: ST-006-ST-008 auth pages, middleware, nav shell en dashboard

- Login/register pages met AuthForm (useActionState + useFormStatus)
- Server Actions voor login, register, logout met Zod validatie
- Middleware checkt session cookie zonder iron-session op Edge runtime
- AppLayout met auth-check en NavBar met demo badge en actieve links
- Dashboard toont productenlijst via ProductList Client Component
- Fix: a-in-a hydration error opgelost door div plus useRouter te gebruiken

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Janpeter Visser 2026-04-24 11:18:42 +02:00
parent 24924c9b79
commit 8017968e60
9 changed files with 375 additions and 2 deletions

View file

@ -17,7 +17,7 @@ const loginSchema = z.object({
password: z.string().min(1),
})
export async function registerAction(formData: FormData) {
export async function registerAction(_prevState: unknown, formData: FormData) {
const parsed = registerSchema.safeParse({
username: formData.get('username'),
password: formData.get('password'),
@ -38,7 +38,7 @@ export async function registerAction(formData: FormData) {
redirect('/dashboard')
}
export async function loginAction(formData: FormData) {
export async function loginAction(_prevState: unknown, formData: FormData) {
const parsed = loginSchema.safeParse({
username: formData.get('username'),
password: formData.get('password'),