From a7fb9a585a17ea49754fb1e12ccc08b43df0d151 Mon Sep 17 00:00:00 2001 From: Nils-Johan Gynther Date: Fri, 17 Apr 2026 23:01:41 +0200 Subject: [PATCH] feat(products): add UpsertNutritionDto import to products controller --- NEXT_STEPS.md | 10 ++++++++++ backend/src/products/products.controller.ts | 1 + 2 files changed, 11 insertions(+) diff --git a/NEXT_STEPS.md b/NEXT_STEPS.md index af714ac2..b44cbc9e 100644 --- a/NEXT_STEPS.md +++ b/NEXT_STEPS.md @@ -28,6 +28,8 @@ | Matplan — inventariejämförelse | ❌ Saknas | | Seed produktdata med kategoritilldelning | ❌ Saknas (002-seed-products.sql.disabled) | | Användarspecifika produkter (UserProduct) | ⚠️ Schema klart, UI basic | +| Användarroller (user / admin) | ❌ Saknas | +| Användarhantering i admin-UI | ❌ Saknas | --- @@ -55,6 +57,14 @@ Admin-UI:t tillåter idag att sätta kategori per produkt. För att effektivt ka - Filtervy för okategoriserade produkter - Möjlighet att sätta kategori på flera produkter samtidigt (bulk-select) +### 5. Användarroller och användarhantering i admin +Idag har alla inloggade användare samma behörighetsnivå. Behövs: +- **Databas:** Lägg till `role` (enum `user` | `admin`) på `User`-modellen i Prisma + migration +- **Backend:** Rollbaserad guard (`@Roles('admin')`) — skyddar admin-endpoints; vanliga användare nekas med 403 +- **Auth:** Rollen inkluderas i JWT-tokenen och i Auth.js session-objektet +- **Frontend — admin-UI (`/admin/users/`):** Lista användare, skapa nya konton (namn, e-post, lösenord, roll), ändra roll, avaktivera konto +- **Frontend — skyddade routes:** `/admin/*` kräver admin-roll; omdirigerar annars till startsidan + --- ## Teknisk skuld och städning diff --git a/backend/src/products/products.controller.ts b/backend/src/products/products.controller.ts index a5a1fe59..9d6b2271 100644 --- a/backend/src/products/products.controller.ts +++ b/backend/src/products/products.controller.ts @@ -17,6 +17,7 @@ import { ProductsService } from './products.service'; import { MergeProductsDto } from './dto/merge-products.dto'; import { UpdateCanonicalNameDto } from './dto/update-canonical-name.dto'; import { SetTagsDto } from './dto/set-tags.dto'; +import { UpsertNutritionDto } from './dto/upsert-nutrition.dto'; import { BulkUpdateProductsDto } from './dto/bulk-update-products.dto'; @Controller('products')