Skip to main content

UC-OVG-RES-007 — Geen toegang zonder actieve ouder-/voogdrelatie

1. Kerngegevens

VeldWaarde
Usecase-IDUC-OVG-RES-007
NaamGeen toegang zonder actieve ouder-/voogdrelatie
DomeinOuder/voogd / Resultaten en geschiedenis
Primaire actorOuder/voogd
Secundaire actor(en)Frontend, backend, database, securitylogging
RolcontextActieve ouder-/voogdcontext; server-side bepaald vanuit de ingelogde gebruiker
Betrokken schermenKindgeschiedenis, Resultaatdetail, PDF-download, Toegang geweigerd
Gerelateerde usecasesUC-OVG-KIND-005, UC-OVG-RES-001, UC-OVG-RES-002, UC-GEN-REL-004
Primaire entiteitenUserRelationships, ExerciseRuns, Users
Secundaire entiteiten / eventsGuardianAccessDenied, SecurityLog
Gerelateerde popupsPOP-OVG-RESULT-ACCESS-DENIED, POP-OVG-CHILD-RELATION-NOT-ACTIVE
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe het systeem toegang tot resultaten en geschiedenis blokkeert wanneer er geen actieve ouder-/voogdrelatie bestaat. Dit geldt ook wanneer de gebruiker een oude URL, browsergeschiedenis, bookmark of gemanipuleerd RunId gebruikt.

De blokkade is server-side leidend. De frontend mag acties verbergen, maar de backend beslist bij iedere raadpleeg- en exportactie opnieuw of de relatie actief is.

Uitgangspunten

  • Actieve ouder-/voogdrelatie is vereist voor resultaatinzage.
  • Clientstate en oude routes geven geen toegang.
  • Na ontkoppeling vervalt reguliere resultaatinzage.
  • Blokkade wijzigt geen historische runs.
  • Ongeautoriseerde pogingen kunnen veilig gelogd worden.

3. Scope

Deze usecase beschrijft:

  • blokkeren van kindgeschiedenis zonder actieve relatie;
  • blokkeren van resultaatdetail zonder actieve relatie;
  • blokkeren van PDF-export zonder actieve relatie;
  • veilige foutafhandeling zonder datalek;
  • ongeldig maken van verouderde clientselecties.

Deze usecase beschrijft niet:

  • relatie opnieuw aanmaken;
  • ontkoppeling terugdraaien;
  • historische runs verwijderen;
  • identity-providerrollen wijzigen.

3.1 Afbakening met aangrenzende domeinen

OnderdeelAfbakening
Leerling / ResultatenDe historische run, statistiekvelden en PDF-bron blijven dezelfde bron als in het leerlingdomein; de ouder-/voogdweergave voegt alleen autorisatie en selectie op oudercontext toe.
Docent / ResultatenDocentresultaten blijven beperkt tot de eigen docentcontext; een docentrelatie geeft geen toegang via ouder-/voogdroutes.
Generiek / RelatiesRelatievorming, uitnodigingen en algemene relatie-lifecycle blijven buiten deze resultaatusecases.
Database / ReadmodelsBij blokkade wordt geen resultaatreadmodel opgebouwd en geen gedeeltelijke resultaatdata teruggegeven.

4. Pre-condities

| 001 | Er is een verzoek voor kindgeschiedenis, resultaatdetail of PDF-export. | | 002 | De gebruiker is ingelogd, maar de actieve ouder-/voogdrelatie ontbreekt of is beëindigd. | | 003 | De backend kan relatie- en runcontext controleren. |

5. Post-condities

| 001 | Toegang is geweigerd. | | 002 | Er is geen resultaatdata getoond. | | 003 | Geen run of relatie is gewijzigd. | | 004 | Eventuele securitylogging is uitgevoerd zonder gevoelige inhoud te lekken. |

6. Trigger

De gebruiker probeert ouder-/voogdresultaten te openen zonder actieve ouder-/voogdrelatie.

7. Normale processtroom

StapActor / componentActieResultaatData / controle
1GebruikerOpent oude of ongeldige resultaatrouteFrontend vraagt data opKindId/RunId
2BackendControleert sessie en rolcontextGebruiker is bekendUsers/Roles
3BackendControleert ouder-/voogdrelatieGeen actieve relatie gevondenUserRelationships
4BackendBlokkeert datasetGeen resultaatdata wordt teruggegevenAccess denied
5FrontendToont veilige meldingGebruiker ziet geen kinddataPopupKey
6BackendRegistreert relevante poging waar nodigSecurity/audit beschikbaar zonder gevoelige payloadSecurityLog

7.1 Scherm- en routegedrag

  • De resultatenroutes worden altijd opnieuw server-side geautoriseerd.
  • De ouder-/voogdweergave toont read-only informatie over gekoppelde kinderen.
  • De pagina gebruikt functionele namen en context, geen technische identifiers als herkenningsmiddel.
  • Oude filters, routeparameters of browserstate mogen geen toegang afdwingen.

8. Alternatieve en exceptionele processtromen

| 001 | Gebruiker heeft docentrelatie met hetzelfde kind maar geen ouderrelatie: ouderroute blijft geblokkeerd. | | 002 | Gebruiker heeft beheerderrol: deze ouder-/voogdroute verleent geen beheerderinzage. | | 003 | Relatie is net beëindigd tijdens een open scherm: vervolgverzoeken worden geweigerd. | | 004 | RunId bestaat niet: systeem toont dezelfde veilige niet-beschikbaarafhandeling. | | 005 | Account van kind is geanonimiseerd: geen actuele persoonsgegevens worden getoond. |

8.1 Afhandeling van verouderde of ongeldige clientstate

  • De backend herhaalt autorisatie bij iedere raadpleeg-, filter-, export- of liveactie.
  • Oude routeparameters, browserselecties en clientcache worden genegeerd wanneer de actuele server-side context geen toegang geeft.
  • De frontend mag het scherm herstellen door het actuele readmodel opnieuw op te vragen.

9. Business rules

| 001 | Ouder-/voogdresultaatinzage vereist een actieve ouder-/voogdrelatie. | | 002 | Andere rollen vervangen de ouder-/voogdrelatie niet binnen deze route. | | 003 | Bij weigering wordt geen gedeeltelijke resultaatdata getoond. | | 004 | Een beëindigde relatie blijft historisch, maar is niet autoriserend. | | 005 | Autorisatie wordt per verzoek opnieuw gecontroleerd. |

9.1 Readmodel- en tellerdefinities

WaardeDefinitieUitsluitingen / grenzen
ToegangsstatusAfgeleid uit actieve UserRelationships-records.Beëindigde relaties zijn niet autoriserend.
FoutmeldingGenerieke toegang-geweigerdafhandeling.Geen kindnaam of rungegevens lekken als toegang ontbreekt.
SecuritylogTechnische vastlegging van geweigerd verzoek waar relevant.Geen antwoorden, tokens of gevoelige payloads.

9.2 Autorisatie- en privacygrenzen

  • De zichtbare dataset wordt altijd server-side beperkt tot actieve ouder-/voogdrelaties.
  • Een gebruiker met gecombineerde rollen krijgt binnen deze routes geen impliciete docent- of beheerderinzage.
  • Resultaat- en livegegevens van niet-gekoppelde kinderen worden nooit gedeeltelijk getoond.

10. Datavalidatie

| 001 | Sessie moet geldig zijn. | | 002 | Relatie moet actief zijn en RelationshipType ouder-/voogd hebben. | | 003 | Run moet aan gekoppeld kind horen voordat data wordt vrijgegeven. | | 004 | Geen enkel resultaatveld mag worden teruggegeven bij autorisatiefout. | | 005 | Oude clientselectie moet worden genegeerd. |

11. Datamutaties en events

| 001 | Geen domeinmutaties. | | 002 | Securitylogging kan een geweigerde toegangspoging vastleggen zonder resultaatinhoud op te slaan. | | 003 | Functioneel event: GuardianAccessDenied. |

12. Geen datamutaties

| 001 | UserRelationships worden niet hersteld. | | 002 | ExerciseRuns worden niet gewijzigd. | | 003 | Systeemberichten worden niet aangemaakt. | | 004 | UserRoles worden niet gewijzigd. |

13. State diagram

Niet van toepassing. Deze usecase blokkeert toegang en wijzigt geen persistent statusobject.

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

PopupKeyGebruik
POP-OVG-RESULT-ACCESS-DENIEDWordt gebruikt wanneer resultaattoegang wordt geweigerd.
POP-OVG-CHILD-RELATION-NOT-ACTIVEWordt gebruikt wanneer de ouder-/voogdrelatie ontbreekt of niet actief is.

Popupteksten, knopteksten, inputlabels en themakeuzes worden niet in deze usecase gedupliceerd. Het popupregister en de popupthemes blijven bronhoudend.

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

| 001 | Autorisatie voor ouder-/voogdresultaten moet server-side uit actieve relaties volgen. | | 002 | Gecombineerde rollen mogen niet impliciet toegang via de verkeerde context geven. | | 003 | Na ontkoppeling mogen oude routes geen resultaatdata meer tonen. |

18.1 Impact voor database-informatie en ontwerpbronnen

| 001 | Autorisatiematrix moet ouder-/voogdraadpleging onderscheiden van docentraadpleging. | | 002 | Usecase-scherm-matrix moet de betrokken ouder-/voogdschermen koppelen aan deze usecase. | | 003 | Usecase-requirement-matrix moet de requirements uit hoofdstuk 19 opnemen. | | 004 | Readmodeldefinities voor ouder-/voogdresultaten moeten alle niveaus van het gekoppelde kind omvatten. |

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.

Er zijn voor deze usecase geen aparte requirement-afleidingen vastgelegd. De procesbeschrijving blijft broncontext voor de SRS-traceability.