/queens: Liste; /queens/new: Anlegeformular; /queens/[id]: Bearbeiten (Zucht/Herkunft/Status/Notizen), "Volk zuweisen"-Dialog (nur ACTIVE Voelker zur Auswahl) und Volk-Historie. Bearbeitungsformular initialisiert Zustand direkt aus der geladenen Queen (gleiches Key-Reset-Pattern wie bei Apiaries/Colonies). Nav-Leiste und proxy.ts-Matcher um /queens erweitert. 10 Vitest-Tests, Lint, Typecheck und Build gruen. Kompletter Flow (Anlegen, Volk zuweisen, Historie) live im Browser gegen den echten Server verifiziert.
33 lines
737 B
TypeScript
33 lines
737 B
TypeScript
import { NextResponse } from "next/server";
|
|
import type { NextRequest } from "next/server";
|
|
|
|
const SESSION_COOKIE = "refreshToken";
|
|
|
|
export function proxy(request: NextRequest) {
|
|
const hasSession = request.cookies.has(SESSION_COOKIE);
|
|
const { pathname } = request.nextUrl;
|
|
|
|
if (pathname.startsWith("/login")) {
|
|
if (hasSession) {
|
|
return NextResponse.redirect(new URL("/settings/users", request.url));
|
|
}
|
|
return NextResponse.next();
|
|
}
|
|
|
|
if (!hasSession) {
|
|
return NextResponse.redirect(new URL("/login", request.url));
|
|
}
|
|
|
|
return NextResponse.next();
|
|
}
|
|
|
|
export const config = {
|
|
matcher: [
|
|
"/login",
|
|
"/settings/:path*",
|
|
"/apiaries/:path*",
|
|
"/colonies/:path*",
|
|
"/queens/:path*",
|
|
],
|
|
};
|