From 38ec3741ab4c3c36286c7f32d7cad46e64ba0aef Mon Sep 17 00:00:00 2001 From: Jonas <77726472+kobolol@users.noreply.github.com> Date: Sat, 18 Apr 2026 22:09:31 +0200 Subject: [PATCH] Document ASP.NET Identity & auth additions Update codexInfo.md to reflect backend changes: add auth endpoints (POST /auth/login, POST /auth/logout, GET /auth/me) alongside existing health check; introduce ASP.NET Identity with AppUser (Guid key, IsAdmin/IsActive/MustChangePassword/CreatedAt/UpdatedAt) and IdentityDbContext mapping; add InitIdentity migration and auto-apply on startup; add IdentitySeedService to create an initial admin if missing; remove temporary test entity/endpoints and include RemoveTestItems migration; update API project dependencies and add AppUser configuration, Auth DTOs and AuthController; document Program.cs changes for Identity registration, cookie config (hoard.auth), UseAuthentication/UseAuthorization, startup seeding and enhanced logging; preserve notes about local dev docker-compose and appsettings.custom.json behavior. --- codexInfo.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/codexInfo.md b/codexInfo.md index b705a21..7a586f2 100644 --- a/codexInfo.md +++ b/codexInfo.md @@ -87,11 +87,15 @@ Ich baue alleine neben meiner Ausbildung eine einfache self-hosted Web-App für - Sidebar-Sichtbarkeit unterstützt `Visibility.Route` mit optionalem `visibilityRoute` in `GUI/src/plugins/routesLayout.ts`. - Mobile-Touch-Optimierung ist für alle aktuellen öffentlichen Oberflächen aktiv (Shell, Home, Login, Impressum, 404), inklusive Safe-Area-Unterstützung. - Desktop-Ansicht bleibt unverändert, da alle neuen Anpassungen ausschließlich in mobilen Breakpoints (`<= 960px`, Feinschliff `<= 600px`) umgesetzt sind. -- Backend-API ist auf ein Minimal-Setup reduziert und stellt aktuell den Test-Endpunkt `GET /api/health` bereit. +- Backend-API enthält aktuell Basis-Endpunkte für Health (`GET /api/health`) und Auth (`POST /auth/login`, `POST /auth/logout`, `GET /auth/me`). - Swagger/OpenAPI ist im Backend nur im Development-Modus aktiv (`/swagger`). - Frontend-Build (`npm run build` im `GUI`-Projekt) schreibt direkt nach `API/wwwroot`; das Backend liefert die SPA und statische Assets aus. - Backend nutzt jetzt PostgreSQL über `ConnectionStrings:Postgres` mit EF Core (`ApplicationDbContext`) und führt Migrationen beim Start automatisch aus. -- Temporäre Test-Entity und Test-CRUD-Endpunkt (`api/test-items`) wurden wieder entfernt; aktuell bleibt der minimale Health-Endpunkt `GET /api/health`. +- Backend nutzt ASP.NET Identity mit `AppUser` (Guid-Key, `IsAdmin`, `IsActive`, `MustChangePassword`, `CreatedAt`, `UpdatedAt`) über PostgreSQL. +- `ApplicationDbContext` basiert auf `IdentityDbContext`; Identity-Tabellen sind auf `Users`, `Roles`, `UserRoles`, `UserClaims`, `UserLogins`, `RoleClaims` und `UserTokens` gemappt. +- Migration `InitIdentity` (`API/Migrations/20260418192723_InitIdentity.cs`) erstellt das Identity-Schema und wird beim Start automatisch angewendet. +- Temporäre Test-Entity und Test-CRUD-Endpunkt (`api/test-items`) wurden wieder entfernt. +- Nach den Migrationen wird per `IdentitySeedService` ein initialer Admin angelegt, falls noch kein Admin existiert. - Für lokale Entwicklung liegt unter `API/Dev/docker-compose.yml` ein Stack mit PostgreSQL (`localhost:5432`) und pgAdmin (`localhost:5050`). - API lädt optional `API/appsettings.custom.json`; wenn vorhanden, überschreibt sie Werte aus `appsettings.json`. - `API/appsettings.custom.json` ist in `.gitignore` hinterlegt, damit lokale Konfigurationswerte nicht versehentlich committed werden. @@ -127,5 +131,11 @@ Ich baue alleine neben meiner Ausbildung eine einfache self-hosted Web-App für - Neue lokale Konfigurationsdatei `API/appsettings.custom.json` aus der bisherigen `appsettings.json` angelegt und in `.gitignore` ergänzt. - Test-Datentyp und Test-API wieder entfernt: `API/Models/Test/TestItem.cs` und `API/Controllers/TestItemsController.cs` gelöscht, `ApplicationDbContext` bereinigt. - Neue Migration `RemoveTestItems` erstellt (`API/Migrations/20260418153650_RemoveTestItems.cs`), die Tabelle `test_items` entfernt und den Snapshot aktualisiert. +- `API/API.csproj` um `Microsoft.AspNetCore.Identity.EntityFrameworkCore` ergänzt und `Microsoft.EntityFrameworkCore.Design` auf `10.0.6` angehoben. +- ASP.NET Identity eingeführt: `API/Models/AppUser.cs` angelegt und `API/Database/ApplicationDbContext.cs` auf `IdentityDbContext, Guid>` umgestellt. +- `API/Database/Configurations/AppUserConfiguration.cs` ergänzt, damit `AppUser` auf `Users` liegt und projektspezifische Pflichtfelder sauber konfiguriert sind. +- Migration `InitIdentity` ergänzt (`API/Migrations/20260418192723_InitIdentity.cs` + Designer + Snapshot-Update) für User-/Role-/Claim-Tabellen. +- Auth-Basis implementiert: DTOs unter `API/Contracts/Auth/*` und `API/Controllers/Auth/AuthController.cs` mit `POST /auth/login`, `POST /auth/logout`, `GET /auth/me`. +- `API/Program.cs` um Identity-Service-Registrierung, Cookie-Konfiguration (`hoard.auth`), `UseAuthentication`/`UseAuthorization` und Startup-Seeding erweitert. - Backend-Logging in `API/Program.cs` ergänzt: `AddSimpleConsole` (Zeitstempel, Single-Line), `AddDebug` und `AddHttpLogging`/`UseHttpLogging` für Request-Logs. -- `API/Services/IdentitySeedService.cs` um `ILogger` erweitert und eine Info-Logzeile ergänzt, wenn der Admin-Account erfolgreich geseedet wurde. +- `API/Services/IdentitySeedService.cs` neu ergänzt: erstellt beim ersten Start einen initialen Admin aus `SeedAdmin:*` und loggt Erfolg/Fehler nachvollziehbar.