From 8e9b90028f4e37ececcb76647ed2b1820dc34880 Mon Sep 17 00:00:00 2001 From: Nils-Johan Gynther Date: Tue, 21 Apr 2026 10:30:30 +0200 Subject: [PATCH] docs: update TEKNISK_BESKRIVNING.md to reflect changes in authentication middleware and role-based access control; remove obsolete middleware.ts file --- TEKNISK_BESKRIVNING.md | 2 +- frontend/middleware.ts | 19 ------------------- 2 files changed, 1 insertion(+), 20 deletions(-) delete mode 100644 frontend/middleware.ts diff --git a/TEKNISK_BESKRIVNING.md b/TEKNISK_BESKRIVNING.md index e89f995f..dd4abc37 100644 --- a/TEKNISK_BESKRIVNING.md +++ b/TEKNISK_BESKRIVNING.md @@ -404,7 +404,7 @@ Alla proxy-routes använder `withAuth(handler)`-wrappern (från `lib/with-auth.t ### Autentisering (Auth.js v5) - `auth.ts` — NextAuth-konfiguration med Credentials provider; sparar `accessToken`, `userId`, `username` och `role` i JWT-token och session -- `proxy.ts` — Skyddar alla routes utom `/login`, `/register` och `/api/*`; blockerar `/admin/*` om sessionens `role` inte är `admin`. **Next.js 16 använder `proxy.ts` istället för `middleware.ts`.** +- `proxy.ts` — Next.js 16 kräver att auth-middleware heter `proxy.ts` (inte `middleware.ts`). Skyddar alla routes utom `/login`, `/register` och `/api/*`: ej inloggade redirectas till `/login`, och inloggade icke-admins blockeras från `/admin/*` (redirect till `/`). Täcker alltså både autentisering och rollbaserad accesskontroll i ett enda fil. - `lib/auth-headers.ts` — `getAuthHeaders()` hämtar Bearer-token från session (server-side, används i Next.js API route-proxies) - `lib/api.ts` — `fetchJson()` lägger automatiskt till auth-headers server-side, redirectar till `/login` vid 401 - `lib/with-auth.ts` — `withAuth(handler)`-wrapper för Next.js Route Handlers som behöver autentisering via `request.auth`. Löser kompatibilitetsproblemet med `auth()` standalone i Next.js 16 + NextAuth beta. diff --git a/frontend/middleware.ts b/frontend/middleware.ts deleted file mode 100644 index bb447190..00000000 --- a/frontend/middleware.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { auth } from './auth'; -import { NextResponse } from 'next/server'; - -export default auth((req) => { - const { pathname } = req.nextUrl; - - if (pathname.startsWith('/admin')) { - const role = (req.auth?.user as any)?.role; - if (role !== 'admin') { - const loginUrl = new URL('/login', req.url); - loginUrl.searchParams.set('callbackUrl', pathname); - return NextResponse.redirect(loginUrl); - } - } -}); - -export const config = { - matcher: ['/admin/:path*'], -};