Files
ApiCore/ApiCore-Frontend/proxy.ts
T
Nick Szaunig d59153a697 feat(frontend): Bienenstaende-Views (Modul 2)
/apiaries: Liste mit Status-Badge; /apiaries/new: Anlegen-Formular;
/apiaries/[id]: Bearbeiten (Name/Standort/Adresse/Notizen) + Deaktivieren.
Editierbares Formular liest den Ausgangszustand direkt aus der geladenen
Apiary (kein useEffect+setState-Sync, React-Key-Reset-Pattern statt
Effect - vermeidet kaskadierende Renders).

(app)/layout.tsx: einfache Nav-Leiste (Bienenstände fuer alle, Benutzer
nur fuer Admins) - Platzhalter bis zur echten Bottom-Nav/Sidebar aus
Modul 15. proxy.ts-Matcher um /apiaries/* erweitert.

Live im Browser gefunden+behoben: Base-UI-Button meldete fehlende
native Button-Semantik beim Rendern als Link (`nativeButton={false}`
noetig, wenn Button auf ein <a> zeigt).

8 Vitest-Tests, Lint, Typecheck und Build gruen. Kompletter Flow
(Anlegen, Liste, Bearbeiten, Deaktivieren, Navigation) live verifiziert.
2026-08-21 08:59:18 +02:00

27 lines
674 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*"],
};