docs: update TEKNISK_BESKRIVNING.md to reflect changes in authentication middleware and role-based access control; remove obsolete middleware.ts file

This commit is contained in:
Nils-Johan Gynther
2026-04-21 10:30:30 +02:00
parent 60f6064664
commit 8e9b90028f
2 changed files with 1 additions and 20 deletions
+1 -1
View File
@@ -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.
-19
View File
@@ -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*'],
};