Skip to main content

UC-BEH-FRONT-006 — Runtime-samenstelling van gecombineerde frontpage controleren

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-FRONT-006
NaamRuntime-samenstelling van gecombineerde frontpage controleren
DomeinBeheerder / Frontpagebeheer
Primaire actorBeheerder
Secundaire actor(en)Frontend, backend, autorisatiecomponent, database, historyservice
RolcontextActieve beheerdercontext; overige combinatierollen geven geen extra beheerrechten binnen deze usecase
Betrokken schermenSite Instellingen > Frontpagebeheer, contexttabs, contentblokeditor, previewblok, geschiedenisdeel
Gerelateerde usecasesUC-BEH-FRONT-001, UC-BEH-FRONT-002, UC-DOC-FP-005
Primaire entiteitenContentBlocks, ContentBlockHistory, Users
Secundaire entiteiten / eventsDomainType, ContextType, frontpage-readmodels
Gerelateerde popupsNiet van toepassing
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

De beheerder controleert hoe gecombineerde rolfrontpages runtime worden samengesteld uit onderliggende basiscontexten. Het systeem toont de samenstelling zonder een apart persistent ontwerp voor rolcombinaties aan te maken.

Frontpagebeheer beheert tekstuele inhoud binnen vooraf bepaalde frontpagecontexten. De beheerder kan inhoud per context bekijken, aanpassen en historie raadplegen, maar de structurele pagina-opbouw blijft codegedreven.

De usecase gebruikt als functionele basis: DomainType = FrontPage en ContextType = Public, NoRole, Admin, Teacher, Student of Guardian. Dit betekent dat de beheerinterface geen vrije technische constructies introduceert, maar alleen werkt binnen de bestaande sleutelsets, records en codevaste ankers.

De usecase is bedoeld als definitieve functionele beschrijving voor het verdere FO-, TO- en SRS-traject. Daarom wordt expliciet vastgelegd welke gegevens wel worden gelezen of gewijzigd, welke gegevens bewust niet worden gewijzigd en welke validaties altijd server-side moeten plaatsvinden.

Uitgangspunten

  • De beheerdercontext is altijd server-side leidend.
  • De beheerinterface maakt onderscheid tussen beheerbare inhoud en technische ankers.
  • History is onderdeel van het functionele resultaat wanneer een beheerder een wijziging opslaat.
  • Zoeken, filteren, contextselectie en detailopenen zijn read-only totdat expliciet wordt opgeslagen.
  • Onbekende of gemanipuleerde identifiers worden veilig geblokkeerd.
  • De gebruikersinterface toont geen technische stacktraces of interne databasefouten.
  • Domeinoverschrijdende bijwerkingen zijn uitgesloten tenzij een usecase die expliciet benoemt.
  • De uitwerking volgt de centrale popup-, DRY- en ontwerpbronafspraken.

3. Scope

Deze usecase beschrijft:

  • De beheerder controleert hoe gecombineerde rolfrontpages runtime worden samengesteld uit onderliggende basiscontexten. Het systeem toont de samenstelling zonder een apart persistent ontwerp voor rolcombinaties aan te maken.
  • Server-side controleren dat de gebruiker beheerder is.
  • Werken binnen de afbakening van Beheerder / Frontpagebeheer.
  • Gebruik van DomainType = FrontPage en ContextType = Public, NoRole, Admin, Teacher, Student of Guardian.
  • Scheiding tussen beheerbare velden en codegedreven of read-only velden.
  • Veilige fout-, lege-staat- en blokkadeafhandeling.
  • Geen history- of auditmutatie zolang geen wijziging wordt opgeslagen.
  • Readmodelverversing na openen, selectie of raadplegen zonder brondatamutatie.
  • Voorkomen dat deze beheeractie onbedoeld andere domeinen wijzigt.

Deze usecase beschrijft niet:

  • Vrij bouwen van frontpages als pagebuilder.
  • Wijzigen van de vaste volgorde, layout of renderlogica van frontpageblokken.
  • Beheren van systeemnotificaties of featuretoggles.
  • Aanpassen van docent-, leerling- of ouder-/voogdgegevens.
  • Wijzigen van de runtime-prioriteitsregels voor gecombineerde rolfrontpages.
  • Wijzigen van accounts, rollen of sessies buiten de autorisatiecontrole.
  • Maken of wijzigen van oefenruns, resultaten, relaties, meldingen of privéberichten.
  • Aanpassen van onderliggende code, migraties of seeddefinities via de beheerinterface.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is ingelogd en heeft een actief intern OefenHub-account.
PRE-002De gebruiker bezit een actieve beheerderrol.
PRE-003De beheerder opent de relevante route via Site Instellingen of een onderliggende beheerpagina.
PRE-004De relevante records of contexten voor Beheerder / Frontpagebeheer zijn aanwezig of kunnen als veilige lege staat worden getoond.
PRE-005De server-side autorisatiecomponent is beschikbaar.
PRE-006De database en historytabellen zijn beschikbaar voor read-only of muterende acties.
PRE-007De frontend gebruikt de actuele serverrespons en niet alleen eerder opgeslagen clientstate.
PRE-008Eventuele feature- of routebeschikbaarheid is door de applicatieconfiguratie toegestaan.

5. Post-condities

IDResultaat
POST-001De usecase "Runtime-samenstelling van gecombineerde frontpage controleren" is uitgevoerd binnen de beheerdercontext.
POST-002De beheerder ziet een actuele, veilige weergave of een duidelijke blokkade.
POST-003Read-only acties hebben geen domeinmutatie uitgevoerd.
POST-004Er zijn geen content-, history-, account-, autorisatie- of frontpage-runtimegegevens gewijzigd.
POST-005Er is geen historyrecord aangemaakt door alleen openen, selecteren, raadplegen of controleren.
POST-006Ongeldige contexten of identifiers zijn veilig geblokkeerd zonder gedeeltelijke gegevensweergave.
POST-007Technische sleutels en codegedreven velden zijn ongewijzigd gebleven.
POST-008Andere domeinen zoals accounts, meldingen, relaties en oefenruns zijn niet gewijzigd.

6. Trigger

De usecase start wanneer de beheerder de actie Runtime-samenstelling van gecombineerde frontpage controleren uitvoert binnen het beheeronderdeel Beheerder / Frontpagebeheer.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1BeheerderContexttab of controlepaneelSelecteert een frontpagecontext of rolcombinatie.Frontend vraagt contextspecifieke inhoud of samenstelling op.ContextType of runtime rolset.
2FrontendRouteringStuurt selectie naar backend.Backend negeert onbekende of gemanipuleerde contextwaarden.Server-side whitelist.
3BackendAutorisatiecomponentControleert beheerderrol.Alleen beheerder mag beheercontexten inspecteren.UserRoles.
4BackendContextserviceBepaalt of de context een basiscontext of samengestelde runtimecontext is.Basiscontext laadt content; samengestelde context toont afleiding.Geen persistent combinatieontwerp.
5BackendContentblokserviceLaadt ContentBlocks voor de gekozen basiscontext.Alleen bekende blokkeys worden getoond.ContentBlocks.
6BackendCompositieserviceBepaalt prioriteit bij combinatierollen.Volgorde is Beheerder, Docent, Ouder/voogd.Codegedreven regel.
7BackendFrontendLevert contextreadmodel.Frontend ontvangt blokken, read-only samenstelling en waarschuwingen.Geen mutatie.
8FrontendBeheerpaginaToont de gekozen context.Alleen die context is actief in het tabpaneel.Geen gecombineerde wijziging.
9BeheerderBeheerpaginaControleert inhoud of samenstelling.Kan vanuit basiscontext naar bewerken of historie.Vervolgusecase.
10SysteemValidatieBlokkeert opslag voor runtime-samenstellingen.Alleen basiscontexten hebben beheerbare contentrecords.Geen datamutatie.
11FrontendBeheerpaginaToont lege staat voor ontbrekende blokken.Codevaste bloklocatie blijft herkenbaar.Geen recordaanmaak tenzij expliciet via beheerflow toegestaan.
12SysteemAuditLegt alleen wijzigingen vast, geen contextwissel.Contextselectie is read-only gedrag.Geen historyrecord.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0012De gebruiker heeft geen actieve beheerderrol.Backend blokkeert de actie en toont geen beheerdata.Inline toegang geweigerd of veilige redirect.Geen.
ALT-0023Het interne account is gedeactiveerd of geanonimiseerd.De sessiecontext wordt ongeldig gemaakt voor beheeracties.Accountafhandeling.Geen.
ALT-0034De gevraagde context of het gevraagde record bestaat niet.Het systeem toont een veilige niet-beschikbaarafhandeling.Inline melding.Geen.
ALT-0044Er zijn geen contentblokken of historyregels voor de gekozen scope.Het systeem toont een neutrale lege staat.Niet van toepassing.Geen.
ALT-0055De beheerder levert een onbekende ContextType, BlockKey of filterwaarde aan.Backend weigert de query of valt terug op een veilige lege staat zonder extra data te tonen.Inline validatie of neutrale melding.Geen.
ALT-0066De readmodelopbouw faalt technisch.Het systeem toont een veilige foutmelding zonder technische details.Veilige foutmelding.Geen.
ALT-0076De beheerder probeert vanuit deze raadpleegflow een wijziging af te dwingen.Backend negeert of weigert de muterende payload en voert geen command uit.Inline blokkade.Geen.

9. Business rules

IDRegel
BR-UC-BEH-FRONT-006-001Frontpagebeheer beheert alleen inhoud binnen vooraf codevast bekende bloklocaties.
BR-UC-BEH-FRONT-006-002De frontpage-layout, blokvolgorde en structurele aanwezigheid van blokken blijven codegedreven.
BR-UC-BEH-FRONT-006-003Gecombineerde rolfrontpages worden runtime samengesteld uit basiscontexten en krijgen geen zelfstandig persistent frontpageontwerp.
BR-UC-BEH-FRONT-006-004Alle wijzigingen in beheerbare contentvelden worden veldniveau of changesetniveau historisch vastgelegd.
BR-UC-BEH-FRONT-006-005Contentwijzigingen mogen geen autorisaties, navigatierechten of zichtbare gegevenssets wijzigen.
BR-UC-BEH-FRONT-006-006De beheerder mag alleen contexten beheren waarvoor de applicatie een bekende frontpagecontext ondersteunt.
BR-UC-BEH-FRONT-006-007Runtime-samenstelling gebruikt vaste prioriteit: Beheerder, daarna Docent, daarna Ouder/voogd.
BR-UC-BEH-FRONT-006-008Voor gecombineerde rolfrontpages wordt geen afzonderlijk persistent ontwerp beheerd.
BR-UC-BEH-FRONT-006-009De controleweergave mag de runtime-afleiding tonen, maar geen content uit meerdere basiscontexten tegelijk opslaan.

10. Datavalidatie

Veld / objectValidatie
BeheerdercontextDe gebruiker moet server-side een actieve beheerderrol hebben.
RecordtoegangHet record, blok of template moet binnen het gevraagde subdomein bestaan.
Read-only veldenTechnische sleutels, actie-identifiers en codegedreven velden mogen niet via de GUI worden gewijzigd.
ConcurrencyNiet van toepassing voor deze read-only flow; bij vervolgacties wordt de actuele recordversie opnieuw opgehaald.
DomainTypeMoet FrontPage zijn voor frontpagebeheer.
ContextTypeMoet een bekende frontpagecontext zijn: Public, NoRole, Admin, Teacher, Student of Guardian.
BlockKeyMoet verwijzen naar een bestaande codevaste bloklocatie.
Titel en tekstveldenMogen niet als vrije layoutcomponent worden geïnterpreteerd en moeten veilig worden opgeslagen en gerenderd.
GeschiedenisMoet oude en nieuwe waarde, veldnaam, actor en tijdstip kunnen tonen.
Gecombineerde contextMag niet als zelfstandig persistent ontwerp worden opgeslagen.
AuditactorUpdatedByUserId of ChangedByUserId moet naar de uitvoerende beheerder of systeemactor verwijzen.
TijdstipWijzigingsmomenten worden in UTC vastgelegd.
RenderingBeheerbare tekst moet veilig worden opgeslagen en gerenderd zonder actieve inhoud.
Lege waardenVerplichte zichtbare velden mogen niet leeg worden opgeslagen wanneer de runtime ze nodig heeft.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
Alle stappenDatabaseNiet van toepassingDe flow is read-only en wijzigt geen ContentBlocks, ContentBlockHistory, accounts, autorisaties of frontpage-runtimegegevens.

Transactionele uitgangspunten

  • Er wordt geen command uitgevoerd en geen historyrecord aangemaakt.
  • Filteren, selecteren en raadplegen zijn readmodelacties.
  • Technische fouten leiden tot veilige foutafhandeling zonder gedeeltelijke mutatie.

12. Geen datamutaties

EntiteitReden
Users, Roles en UserRolesWorden alleen gebruikt voor autorisatiecontrole; rollen of accounts worden niet gewijzigd.
Runtime gebruikersdataDeze beheerusecase wijzigt geen leerling-, docent- of ouder-/voogddata.
Tickets en meldingenMeldingenbeheer blijft in het generieke meldingendomein.
ExerciseRuns en resultatenOefenruns, geschiedenis en resultaten worden niet aangepast.
Relaties en uitnodigingenRelatiebeheer wordt niet vanuit deze beheerpagina uitgevoerd.
Frontpage layoutdefinities in codeBlokvolgorde, structuur en renderlogica worden niet via data gewijzigd.
Gecombineerde frontpageontwerpenEr wordt geen persistent ontwerp per rolcombinatie aangemaakt.

13. State diagram

Niet van toepassing. Deze usecase wijzigt geen zelfstandig statusobject. De relevante toestanden zijn scherm-, editor- of readmodeltoestanden en worden in de decision flow en het data lifecycle diagram beschreven.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

Hoofdsequence

Vervolgsequence

17. Popupverwijzingen

Usecases verwijzen alleen naar PopupKey. Popupteksten, knopteksten, acties, inputvelden en themakeuzes worden centraal beheerd in het popupregister en de popup-themes.

PopupKeyMomentDoel
Niet van toepassingGeen bevestigings- of invoerpopup in de normale processtroom.Inline meldingen, lege staten of veilige redirects volstaan.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

DoeldocumentAfleiding
Functioneel OntwerpBeschrijft welke beheeractie de beheerder kan uitvoeren, welke schermonderdelen zichtbaar zijn en welke grenzen gelden tussen beheerbare inhoud en codegedreven structuur.
Technisch OntwerpTechnisch Ontwerp: domeinmodel en admin-eigenaarschap, databaseontwerp en frontendcompositie beschrijven de technische uitwerking. Beschrijf server-side autorisatie, server-side autorisatie, readmodelopbouw en het read-only gebruik van ContentBlocks, ContentBlockHistory en Users.
Software Requirements SpecificatieBeschrijft requirements voor toegangscontrole, read-only raadpleging, veilige foutafhandeling en afbakening van beheerbare versus codegedreven velden.
Database-informatieBeschrijft of sleutelsets en readmodellen voor ContentBlocks en ContentBlockHistory voldoende uitleesbaar zijn voor deze flow.
Ontwerpbronnen en registersBeschrijven autorisatiematrix, business rules en relevante matrices bij; command- en eventregisters worden voor deze read-only flow niet uitgebreid.

19. SRS-trace

Deze usecase bevat geen normatieve requirementtekst. De centrale eis en acceptatiecriteria staan in de SRS; onderstaande tabel koppelt de usecase-afleiding alleen aan centrale SRS-*- en AC-*-items.

Usecase-afleidingDektUsecasecontext
REQ-UC-BEH-FRONT-006-001SRS-ADM-002
SRS-ADM-001
SRS-CNT-001
AC-ADM-002
AC-ADM-001
AC-CNT-001
De actie uitsluitend toestaan aan gebruikers met een actieve beheerderrol
REQ-UC-BEH-FRONT-006-002SRS-AUTH-001
SRS-AUTH-002
SRS-ADM-002
SRS-ADM-001
SRS-CNT-001
AC-AUTH-001
AC-AUTH-002
AC-ADM-002
AC-ADM-001
AC-CNT-001
Alle beheerautorisatie server-side controleren en mag niet vertrouwen op clientstate of routeparameters
REQ-UC-BEH-FRONT-006-003SRS-AUTH-004
SRS-ACC-003
SRS-ACC-005
SRS-ADM-001
SRS-CNT-001
SRS-NFR-SEC-001
AC-AUTH-004
AC-ACC-003
AC-ACC-005
AC-ADM-001
AC-CNT-001
AC-NFR-SEC-001
Onbekende, ontbrekende of niet-toegankelijke records veilig afhandelen zonder technische details te tonen
REQ-UC-BEH-FRONT-006-004SRS-ADM-001
SRS-CNT-001
AC-ADM-001
AC-CNT-001
Read-only technische sleutels en codegedreven velden beschermen tegen wijziging via de GUI
REQ-UC-BEH-FRONT-006-005SRS-RDM-001
SRS-ADM-001
SRS-CNT-001
AC-RDM-001
AC-ADM-001
AC-CNT-001
Zoek-, filter- en selecteeracties behandelen als read-only acties zonder domeinmutatie
REQ-UC-BEH-FRONT-006-006SRS-ADM-001
SRS-CNT-001
SRS-NFR-AUD-001
AC-ADM-001
AC-CNT-001
AC-NFR-AUD-001
Deze raadpleegflow uitvoeren zonder persistente domeinmutatie of historyregistratie
REQ-UC-BEH-FRONT-006-007SRS-ADM-001
SRS-CNT-001
AC-ADM-001
AC-CNT-001
Technische sleutels en codegedreven velden beschermen tegen wijziging via deze flow
REQ-UC-BEH-FRONT-006-008SRS-ADM-001
SRS-CNT-001
SRS-NFR-AUD-001
AC-ADM-001
AC-CNT-001
AC-NFR-AUD-001
Historyrecords als immutable behandelen en niet via de beheerinterface wijzigbaar maken
REQ-UC-BEH-FRONT-006-009SRS-ADM-001
SRS-CNT-001
SRS-NFR-SEC-001
AC-ADM-001
AC-CNT-001
AC-NFR-SEC-001
Beheerbare tekst veilig opslaan en renderen zonder actieve of onveilige inhoud
REQ-UC-BEH-FRONT-006-010SRS-ADM-001
SRS-CNT-001
AC-ADM-001
AC-CNT-001
Lege staten en blokkades gebruikersgericht en zonder technische details weergeven
REQ-UC-BEH-FRONT-006-011SRS-ADM-002
SRS-ADM-001
SRS-CNT-001
AC-ADM-002
AC-ADM-001
AC-CNT-001
Frontpagecontent per basiscontext beheren en geen persistent ontwerp per rolcombinatie aanmaken
REQ-UC-BEH-FRONT-006-012SRS-AUTH-003
SRS-LRN-009
SRS-TCH-001
SRS-GUA-001
SRS-ADM-002
SRS-ADM-001
AC-AUTH-003
AC-LRN-009
AC-TCH-001
AC-GUA-001
AC-ADM-002
AC-ADM-001
Gecombineerde rolfrontpages runtime samenstellen volgens de prioriteit Beheerder, Docent, Ouder/voogd
REQ-UC-BEH-FRONT-006-013SRS-ADM-001
SRS-CNT-001
AC-ADM-001
AC-CNT-001
Frontpageblokstructuur, volgorde en layout codegedreven houden
REQ-UC-BEH-FRONT-006-014SRS-AUTH-003
SRS-LRN-009
SRS-ADM-002
SRS-ADM-001
SRS-CNT-001
AC-AUTH-003
AC-LRN-009
AC-ADM-002
AC-ADM-001
AC-CNT-001
De usecase "Runtime-samenstelling van gecombineerde frontpage controleren" uitvoeren volgens de afbakening van het subdomein Beheerder / Frontpagebeheer