# Functional Design Questions — U1 Hosting & Serving Vul je keuze in achter elke `[Answer]:`-tag. Kies de laatste optie (`Anders`) als niets past. --- ## Question 1 — Hoe implementeren we de FR-24-fix? **Context**: dit is het conflict uit § 5.2 van het applicatieontwerp. `AvailabilityMiddleware` wordt geïnstalleerd door `orchestrator.UseModules(app)`, wat **vóór** `app.UseAuthentication()` staat. Op dat moment is `HttpContext.User` dus nog leeg — de middleware kan niet simpelweg de al geauthenticeerde gebruiker uitlezen. Dat is precies waarom de huidige code `ReadJwtToken` gebruikt: die werkt zonder authenticatie, maar valideert de handtekening niet. A) Valideer het token in de middleware zelf, met dezelfde `TokenValidationParameters` als het bearer-schema — die parameters worden dan uit één gedeelde bron gehaald in plaats van gekopieerd. Afgebakend: alleen deze middleware verandert B) Verplaats `app.UseAuthentication()` naar vóór `orchestrator.UseModules(app)`, zodat de middleware `HttpContext.User` kan gebruiken. Kleinere wijziging in regels code, maar verandert de pipeline voor élke module — ook toekomstige C) Laat de gate-bypass helemaal vervallen en gebruik in plaats daarvan een vaste bypass-prefix voor de admin-endpoints — geen tokenlogica meer in de middleware X) Anders (beschrijf hieronder na de [Answer]:-tag) [Answer]:A --- ## Question 2 — Wat gebeurt er als `wwwroot/web/` niet bestaat? **Context**: bij een verse deploy is er nog geen publieke website — die komt uit een andere workspace. De CMS moet dan gewoon starten en `/admin` en `/api/v1` blijven serveren. Maar wat krijgt een bezoeker op `/` te zien? A) Een standaard 404 — er is niets, dus dat is het eerlijke antwoord B) Een ingebouwde placeholderpagina met de melding dat er nog geen website is geplaatst, plus een verwijzing naar `/admin` — handig bij een verse installatie, en meteen bewijs dat de CMS draait C) Een redirect naar `/admin` — de enige zinvolle bestemming zolang er geen website is X) Anders (beschrijf hieronder na de [Answer]:-tag) [Answer]:B --- ## Question 3 — Moet de applicatie hierover iets loggen bij het opstarten? **Context**: een ontbrekende `wwwroot/web/` is bij een verse installatie normaal, maar op een draaiende productieomgeving zou het betekenen dat de website van de klant verdwenen is — precies het scenario dat we met de release-opzet proberen te voorkomen. A) Waarschuwing bij opstarten als de map ontbreekt, met het verwachte pad erbij — zichtbaar in Sentry en de console, zonder het opstarten te blokkeren B) Alleen een informatieregel — het is een normale toestand bij een verse installatie C) Niets loggen — de 404 of placeholder zegt genoeg X) Anders (beschrijf hieronder na de [Answer]:-tag) [Answer]:A --- ## Question 4 — Wat geeft `/health` terug? **Context**: het framework-standaardantwoord is platte tekst `Healthy` met status 200, of `Unhealthy` met 503. UptimeRobot heeft aan de statuscode genoeg. A) De standaard platte tekst — minimaal, snel, en geeft niets prijs over de applicatie B) Een klein JSON-object met status en tijdstip — iets makkelijker te lezen bij handmatig controleren C) JSON met status, tijdstip, versie en geladen modules — dan zie je meteen of alle modules geladen zijn na een deploy X) Anders (beschrijf hieronder na de [Answer]:-tag) [Answer]:C --- ## Question 5 — Moet `/admin` zonder slash doorverwijzen naar `/admin/`? **Context**: de admin-SPA is gebouwd met `base: '/admin/'`. Als iemand `/admin` intypt zonder afsluitende slash, worden relatieve verwijzingen in de pagina één niveau te hoog opgelost, waardoor de SPA stuk kan gaan. Een redirect naar `/admin/` voorkomt dat. A) Ja, redirect `/admin` naar `/admin/` — voorkomt een categorie fouten die lastig te herkennen is B) Nee, laat de SPA-fallback het afhandelen — minder magie in de pipeline X) Anders (beschrijf hieronder na de [Answer]:-tag) [Answer]:A