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.
This commit is contained in:
Jonas
2026-04-18 22:09:31 +02:00
parent fc99c91bd8
commit 38ec3741ab
+13 -3
View File
@@ -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<AppUser, IdentityRole<Guid>, 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.