Compare commits
2 Commits
e370062b5c
...
8e9b90028f
| Author | SHA1 | Date | |
|---|---|---|---|
| 8e9b90028f | |||
| 60f6064664 |
@@ -59,6 +59,13 @@
|
|||||||
|
|
||||||
## Notering 2026-04-20
|
## Notering 2026-04-20
|
||||||
|
|
||||||
|
## Notering 2026-04-21
|
||||||
|
|
||||||
|
- Rollskydd i frontend (middleware) och backend (admin på endpoints) är nu heltäckande.
|
||||||
|
- Rate limiting, CORS-låsning och JWT_SECRET-krav är på plats.
|
||||||
|
- Konsol-loggar borttagna ur backend.
|
||||||
|
- Kvar: Kryptering av PII (e-post, namn i databasen), automatisering av seed_all.sql vid fresh install.
|
||||||
|
|
||||||
Den senaste versionen av `db/seeds/seed_all.sql` är pushad till utvecklingsmiljön, men har **ännu inte körts** på databasen. Nästa gång vi vill uppdatera kategoriträdet måste seed-scriptet köras manuellt:
|
Den senaste versionen av `db/seeds/seed_all.sql` är pushad till utvecklingsmiljön, men har **ännu inte körts** på databasen. Nästa gång vi vill uppdatera kategoriträdet måste seed-scriptet köras manuellt:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -404,7 +404,7 @@ Alla proxy-routes använder `withAuth(handler)`-wrappern (från `lib/with-auth.t
|
|||||||
### Autentisering (Auth.js v5)
|
### Autentisering (Auth.js v5)
|
||||||
|
|
||||||
- `auth.ts` — NextAuth-konfiguration med Credentials provider; sparar `accessToken`, `userId`, `username` och `role` i JWT-token och session
|
- `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/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/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.
|
- `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.
|
||||||
|
|||||||
@@ -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*'],
|
|
||||||
};
|
|
||||||
Reference in New Issue
Block a user