Skip to main content

UC-DOC-RES-006 - Geen toegang tot resultaten buiten docentcontext

1. Kerngegevens

VeldWaarde
Usecase-IDUC-DOC-RES-006
NaamGeen toegang tot resultaten buiten docentcontext
DomeinDocent
SubdomeinResultaten en geschiedenis binnen docentcontext
Primaire actorDocent
Secundaire actor(en)Systeem, Leerling
RolcontextActieve docentcontext met geldige docentrol en resultaatinzage binnen eigen geautoriseerde niveaucontext
Betrokken schermenDocent - Geschiedenis, Docent - Resultaatdetail, Routeguard / toegangafhandeling
Gerelateerde usecasesUC-DOC-RES-001, UC-DOC-RES-002, UC-DOC-RES-003, UC-DOC-RES-004, UC-DOC-RES-005, UC-DOC-LLN-004
Primaire entiteitenUsers, UserRoles, Roles, UserRelationships, TeacherStudentLevelAccess, ExerciseRuns
Secundaire entiteiten / eventsRouteguard, autorisatieservice, resultatenservice
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft hoe OefenHub voorkomt dat een docent resultaten buiten de eigen docentcontext ziet.

De flow is een beveiligings- en autorisatieflow. Zij kan worden getriggerd door directe URL-toegang, verouderde links, gemanipuleerde parameters of gewijzigde autorisaties.

Het systeem blokkeert veilig zonder gegevens uit de verboden context prijs te geven.

3. Scope

3.1 Binnen scope

  • Server-side valideren van toegang tot resultaatlijsten, filters, details en PDF-export.
  • Blokkeren van directe URL-toegang buiten docentcontext.
  • Veilig afhandelen van verouderde clientstate na autorisatiewijzigingen.
  • Voorkomen dat verboden resultaten via filters, paginering of exports zichtbaar worden.
  • Veilig afhandelen van verboden resultaattoegang zonder resultaatdetails of contextinformatie prijs te geven.

3.2 Buiten scope

  • Wijzigen van autorisaties.
  • Relatieontkoppeling zelf.
  • Beheerderanalyse buiten docentcontext.
  • Accountblokkade of security incident workflow.
  • Inhoudelijke correctie van resultaten.

3.3 DRY-afbakening

  • Leerlingresultaten en statistiekdefinities blijven inhoudelijk bronhoudend in de leerlingresultaat- en centrale FO/TO/SRS-regels.
  • Docentniveau-autorisaties worden hier toegepast, maar het wijzigen ervan blijft bronhoudend in het subdomein Leerlingen en niveau-autorisaties.
  • Relatievorming en relatieontkoppeling blijven bronhoudend in het generieke relatiedomein.
  • PDF-layoutregels worden niet per usecase als nieuwe bronwaarheid herhaald, maar verwijzen naar de centrale resultaat- en PDF-afspraken.
  • Deze usecases maken geen eigen kopie van oefenruns, statistieken of histories voor docenten.
  • Directe toegang via URL, filter of exportverzoek blijft altijd onder dezelfde autorisatiegrens vallen.
  • Systeemberichten, privéberichten en meldingen worden niet aangemaakt door het bekijken van resultaten.
  • Module-specifieke payload blijft eigendom van de technische module; de docentweergave gebruikt veilige representaties.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd.
PRE-002De gebruiker heeft een actieve docentrol.
PRE-003De OefenHub-sessiecontext is server-side opgebouwd.
PRE-004De betrokken leerling, run of resultatenlijst valt potentieel binnen de docentcontext.
PRE-005De backend kan actuele autorisatie-, relatie- en resultaatgegevens ophalen.
PRE-006De relevante resultaatdata is beschikbaar in de persistente run- en voortgangsopslag.

5. Post-condities

IDResultaat
POST-001De docent ziet uitsluitend resultaten die binnen de eigen docentcontext vallen.
POST-002Geen resultaat, oefenrun, autorisatie of profielgegeven is gewijzigd door deze read-only flow.
POST-003Een verboden of verouderd verzoek is veilig geblokkeerd zonder contextlek.
POST-004De frontend toont een actuele lijst, detailweergave, export of veilige afwijzing.
POST-005Fout- en blokkadesituaties worden veilig afgehandeld zonder nieuwe domeinentiteiten te introduceren.
POST-006Vervolgacties blijven binnen de daarvoor bedoelde usecases.

6. Trigger

De docent probeert via route, link, oude clientstate, filterwaarde of directe URL een resultaat buiten de eigen docentcontext te openen.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1DocentRoute/link/filterProbeert resultaat of lijst buiten context te openenFrontend stuurt verzoek of routeguard startExerciseRunId/filterparameters
2FrontendRouteguardControleert bekende sessiestatusStuurt verzoek naar backend voor definitieve controleClientcontrole is aanvullend
3SysteemSessieserviceControleert actieve docentrolBlokkeert zonder docentrolUserRoles, Roles
4SysteemResultatenserviceBepaalt betrokken leerling, niveau en runcontextMaakt autorisatiecontrole mogelijkExerciseRuns
5SysteemAutorisatieserviceControleert of docent deze context mag zienDetecteert buiten-context situatieTeacherStudentLevelAccess
6SysteemAutorisatieserviceWeigert toegangRetourneert generieke toegangafhandelingGeen resultaatdata
7FrontendToegangafhandelingToont neutrale fout of navigeert terugDocent krijgt geen verboden detailsGeen datalek
8DocentPaginaKeert terug naar toegestane lijst of frontpageFrontend laadt toegestane context opnieuwUC-DOC-RES-001
9SysteemApplicatieLaat alle domeindata ongewijzigdGeen resultaat of autorisatie aangepastGeen mutatie

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0011Directe URL bevat onbekende runSysteem geeft generieke niet-beschikbaarafhandeling zonder contextinformatie.Niet van toepassingGeen
ALT-0023Gebruiker is geen docent meerSysteem blokkeert volledige docentresultaatroute.Niet van toepassingGeen
ALT-0035Autorisatie is net ingetrokken na laden van lijstSysteem weigert detailopening en ververst lijst.Niet van toepassingGeen
ALT-0045Run hoort bij dezelfde leerling maar ander niveau of andere docentcontextSysteem blokkeert resultaatinhoud.Niet van toepassingGeen
ALT-0056PDF-export wordt buiten context aangevraagdSysteem genereert geen PDF.Niet van toepassingGeen
ALT-0067Poging lijkt technisch verdachtSysteem logt met passend niveau zonder persoonsgegevens onnodig breed te verspreiden.Niet van toepassingGeen

9. Business rules

IDRegel
BR-001Docentresultaten zijn altijd docentcontextgebonden.
BR-002Een docent mag geen resultaten zien van niveaus die buiten de eigen geautoriseerde context vallen.
BR-003Directe URL-toegang geeft nooit recht op resultaatinzage.
BR-004Filters, paginering en exports gebruiken dezelfde autorisatiegrens als resultaatdetails.
BR-005Bij blokkade wordt geen verboden resultaatinhoud, leerlingcontext of andere docentcontext bevestigd.
BR-006Clientstate is nooit leidend voor resultaattoegang.
BR-007Verouderde links worden veilig geblokkeerd wanneer de actuele autorisatie ontbreekt.
BR-008Een toegangsblokkade mag geen onnodige persoonsgegevens of resultaatcontext prijsgeven.
BR-009Deze usecase wijzigt geen autorisaties; zij past bestaande autorisaties toe.
BR-010Deze usecase wijzigt geen resultaten en geen geschiedenis.
BR-011Een gebruiker met gecombineerde rollen krijgt alleen toegang via de op dat moment geldige rolcontext.
BR-012Beheerderrechten worden niet stilzwijgend gebruikt binnen een docentresultaatroute.

10. Datavalidatie

Veld / objectValidatie
DocentUserIdMoet overeenkomen met de server-side ingelogde gebruiker en mag niet uit formulierinvoer worden vertrouwd.
StudentUserIdMoet binnen de toegestane docentcontext vallen voordat resultaten worden gelezen.
ExerciseRunIdMoet bestaan, afgerond zijn en binnen de toegestane context vallen.
TeacherLevelIdMoet onderdeel zijn van de eigen docentcontext of historische resultaatcontext waar de docent recht op heeft.
CategoryIdMag alleen als filter worden toegepast binnen de reeds toegestane dataset.
ExerciseIdMag alleen als filter of context worden gebruikt binnen de toegestane dataset.
PeriodefilterMoet geldige datums bevatten en mag niet leiden tot datasetuitbreiding buiten autorisatie.
PagineringMoet worden begrensd op toegestane waarden en bij lege pagina veilig terugvallen.
PDF-bestandsnaamMoet worden opgeschoond van ongeldige tekens en lengtebeperkingen respecteren.
ModulepayloadMag alleen via veilige render- of exportrepresentatie worden gebruikt.

11. Datamutaties en events

StapTypeEntiteit / readmodelGedrag
1ControleSessieservice / autorisatieserviceControleert actieve docentrol en resultaatcontext server-side.
2ControleTeacherStudentLevelAccess / UserRelationshipsBepaalt dat de gevraagde leerling, run, filter of export buiten de docentcontext valt.
3AfwijzingToegangafhandelingRetourneert een generieke blokkade zonder resultaatdata of contextdetails prijs te geven.
4Geen domeinmutatieExerciseRuns / ExerciseRunProgressVerboden toegang wijzigt geen run, voortgang, resultaat of statistiek.
5Geen domeinmutatieTeacherStudentLevelAccess / UserRelationshipsAutorisaties en relaties worden niet aangepast.
6Geen domeinmutatieSystemMessages / PrivateMessages / TicketsDe blokkade maakt geen systeemcommunicatie of melding aan.

12. Geen datamutaties

EntiteitReden
UsersResultaat- en geschiedenisweergave wijzigt geen gebruikersaccount.
UserRoles / RolesBekijken of exporteren van resultaten wijzigt geen rollen.
UserRelationshipsDocent-leerlingrelaties worden alleen gecontroleerd, niet gewijzigd.
TeacherStudentLevelAccessAutorisaties worden gecontroleerd, niet aangepast.
TeacherLevelsNiveaucontext wordt gelezen en niet gewijzigd.
CategoriesCategoriecontext wordt gelezen en niet gewijzigd.
ExercisesOefeningcontext wordt gelezen en niet gewijzigd.
ExerciseRunsBekijken, filteren of exporteren wijzigt de run niet.
ExerciseRunProgressVraagdetails worden gelezen en niet aangepast.
SystemMessagesResultaatinzage maakt geen systeemberichten aan.
PrivateMessagesResultaatinzage maakt geen privéberichten aan.
TicketsResultaatinzage maakt geen melding aan.

13. State diagram

Niet van toepassing als persistent statusmodel. De usecase leest bestaande oefenrunstatussen en autorisatiecontext, maar introduceert geen nieuwe status voor docentresultaatinzage.

14. Decision flow

15. Data lifecycle diagram

Deze usecase maakt geen nieuwe resultaatdata aan. Het lifecyclebeeld toont dat bestaande runs alleen worden gelezen.

16. Sequence diagrammen

16.1 Toegang buiten docentcontext blokkeren

16.2 Directe route of verouderde clientstate blokkeren

17. Popupverwijzingen

PopupKeyMomentDoel
Niet van toepassingAlle momentenResultaatinzage, filtering, export en blokkades gebruiken geen nieuwe domeinspecifieke popupregister-popup.
Niet van toepassingPDF-downloadfoutEen exportfout wordt via generieke foutafhandeling verwerkt zonder popupteksten in de usecase te dupliceren.

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

DoeldocumentAfleiding
Functioneel OntwerpDocentresultaten moeten expliciet contextgebonden worden beschreven: alleen resultaten van niveaus die de docent zelf aan de leerling heeft geautoriseerd of waarvoor de docent volgens de geldende docentcontext inzagerecht heeft.
Technisch OntwerpTechnisch Ontwerp: oefenruns, resultaten en PDF-brondata, PDF-export, readmodels en resultaatlezers en autorisatie beschrijven de technische uitwerking. Backendqueries voor geschiedenis, filters, resultaatdetails en PDF-export moeten altijd eerst autorisatiecontext toepassen en daarna pas filters, sortering of exportlogica.
Software Requirements SpecificationRequirements moeten vastleggen dat directe URL-toegang, filterparameters en exportverzoeken geen toegang buiten docentcontext mogen opleveren.
Database-informatieExerciseRuns en gerelateerde resultaatdata blijven bronhoudend; er is geen aparte docentresultatentabel nodig.
OntwerpbronnenAutorisatiematrix, business rules en usecase-matrices moeten docentresultaatinzage en blokkades buiten context opnemen. Read-only resultaatinzage vraagt geen nieuw domeinevent.
Privacy/AVGResultaatinzage door docenten moet dataminimalisatie respecteren en geen resultaten buiten onderwijscontext zichtbaar maken.

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-DOC-RES-006-001SRS-AUTH-001
SRS-TCH-004
AC-AUTH-001
AC-TCH-004
Resultaattoegang buiten docentcontext blokkeren
REQ-UC-DOC-RES-006-002SRS-AUTH-001
SRS-TCH-001
SRS-CNT-004
AC-AUTH-001
AC-TCH-001
AC-CNT-004
Directe URL-toegang server-side controleren
REQ-UC-DOC-RES-006-003SRS-AUTH-001
SRS-RDM-001
SRS-TCH-001
AC-AUTH-001
AC-RDM-001
AC-TCH-001
Filter- en exporttoegang aan dezelfde contextgrens onderwerpen
REQ-UC-DOC-RES-006-004SRS-TCH-001
AC-TCH-001
Geen verboden contextinformatie lekken bij blokkade
REQ-UC-DOC-RES-006-005SRS-AUTH-001
SRS-AUTH-002
SRS-TCH-001
SRS-GUA-001
SRS-NFR-SEC-001
AC-AUTH-001
AC-AUTH-002
AC-TCH-001
AC-GUA-001
AC-NFR-SEC-001
Verouderde clientstate veilig afhandelen
REQ-UC-DOC-RES-006-006SRS-TCH-004
SRS-NFR-SEC-001
AC-TCH-004
AC-NFR-SEC-001
Blokkades veilig afhandelen zonder resultaatdetails of contextgegevens prijs te geven
REQ-UC-DOC-RES-006-007SRS-AUTH-001
SRS-LRN-009
SRS-TCH-001
AC-AUTH-001
AC-LRN-009
AC-TCH-001
Toegang tot leerlingresultaten altijd server-side valideren
REQ-UC-DOC-RES-006-008SRS-LRN-009
SRS-TCH-005
AC-LRN-009
AC-TCH-005
Testruns uitsluiten van docentresultaten
REQ-UC-DOC-RES-006-009SRS-LRN-006
SRS-TCH-004
SRS-NFR-AUD-001
AC-LRN-006
AC-TCH-004
AC-NFR-AUD-001
Niet-afgeronde runs buiten resultaatgeschiedenis houden
REQ-UC-DOC-RES-006-010SRS-TCH-001
AC-TCH-001
Technische identifiers niet als gebruikersgerichte herkenningsgegevens tonen
REQ-UC-DOC-RES-006-011SRS-TCH-004
AC-TCH-004
Resultaatinzage zonder domeinmutatie verwerken