UC-DOC-SAM-004 - Collaboratorrechten binnen niveau toepassen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-SAM-004 |
| Naam | Collaboratorrechten binnen niveau toepassen |
| Domein | Docent |
| Subdomein | Samenwerking, collaborators en eigenaarschap |
| Primaire actor | Systeem |
| Secundaire actor(en) | Docent, Systeem |
| Rolcontext | Docentcontext waarbij de gebruiker actuele eigenaar of actieve collaborator van het niveau kan zijn |
| Betrokken schermen | Docent - Oefenaanbod, categorieën, oefeningen, configuratie, afgeschermde leerling- en resultaatroutes |
| Gerelateerde usecases | UC-DOC-SAM-001, UC-DOC-SAM-002, UC-DOC-SAM-003, UC-DOC-AANB-004, UC-DOC-OEF-004, UC-DOC-OEF-005, UC-DOC-LLN-001, UC-DOC-RES-001, UC-DOC-LIVE-001 |
| Primaire entiteiten | Levels, LevelCollaborators, Exercises, LevelCategories, UserRoles |
| Secundaire entiteiten / events | Autorisatiecontext, contentbewerkrechten, routeguard, ExerciseHistory |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe OefenHub bij docentacties bepaalt welke rechten een actieve collaborator binnen een niveau heeft. Een collaborator mag meewerken aan onderwijsinhoud binnen het niveau, zoals categorieën binnen het niveau, concrete oefeningen en moduleconfiguratie. Die samenwerking geeft geen toegang tot leerlingen, leerlingautorisaties, resultaten, geschiedenis of live meekijken van de eigenaar. De usecase is daarom vooral een autorisatie- en routeguardflow die bij meerdere docentusecases wordt aangeroepen.
3. Scope
3.1 Binnen scope
- Bepalen of een docent eigenaar of actieve collaborator van een niveau is.
- Toestaan van inhoudelijke bewerkacties binnen de niveaucontext.
- Blokkeren van leerling-, resultaat-, geschiedenis- en live-meekijkroutes voor collaborators zonder eigen leerlingautorisatiecontext.
- Vastleggen van contentwijzigingen met de echte uitvoerende actor.
- Toepassen van rechten bij directe URL’s, browserstate en API-aanroepen.
3.2 Buiten scope
- Collaborators toevoegen of verwijderen.
- Eigenaarschap overdragen.
- Nieuwe relatietypen aanmaken.
- Leerlingautorisaties toekennen aan collaborators.
- Beheerder-forceeracties.
- Detailuitwerking van iedere contentmutatie zelf.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd. |
| PRE-002 | De gebruiker heeft een actieve docentrol. |
| PRE-003 | Er is een niveaucontext voor de gevraagde actie. |
| PRE-004 | Het niveau bestaat. |
| PRE-005 | De gevraagde actie is gekoppeld aan een content-, leerling-, resultaat- of live-meekijkroute. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Toegestane contentacties kunnen doorgaan binnen het niveau. |
| POST-002 | Niet-toegestane leerling-, resultaat- en live-meekijkacties worden geblokkeerd. |
| POST-003 | Er is geen uitbreiding van zichtbare gegevensset ontstaan door collaboratorstatus. |
| POST-004 | Contentwijzigingen blijven auditbaar met de echte actor. |
6. Trigger
Een docent voert een actie uit op een niveau, categorie, oefening of afgeschermde route waarbij collaboratorrechten relevant zijn.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Docent | Docentroute | Start een actie binnen niveaucontext | Frontend vraagt autorisatie aan | Route/API |
| 2 | Systeem | Backend autorisatie | Laadt gebruiker en actieve docentrol | Bepaalt docentcontext | UserRoles |
| 3 | Systeem | Backend autorisatie | Laadt niveaucontext | Bepaalt eigenaar en collaboratorstatus | Levels, LevelCollaborators |
| 4 | Systeem | Beslisregel | Classificeert actie als content of leerling/resultaat/live | Kiest autorisatiepad | ActionType |
| 5 | Systeem | Contentpad | Staat actie toe bij eigenaar of actieve collaborator | Contentflow mag doorgaan | LevelCategories/Exercises |
| 6 | Systeem | Afgeschermd pad | Blokkeert leerling-, resultaat- of live-route voor collaborator zonder eigen relatie/autorisatie | Routeguard weigert toegang | StudentLevelAuthorizations/LiveViewAudit |
| 7 | Systeem | Audit | Geeft echte actor door aan vervolgmutatie | Wijziging wordt herleidbaar | ChangedByUserId |
| 8 | Frontend | UI | Toont alleen toegestane acties | Voorkomt misleidende opties | Autorisatie-readmodel |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Geen actieve docentrol | Systeem blokkeert alle docentniveauacties. | Niet van toepassing | Geen |
| ALT-002 | 3 | Geen eigenaar en geen actieve collaborator | Systeem blokkeert contentactie. | Niet van toepassing | Geen |
| ALT-003 | 4 | Actie betreft leerlingbeheer | Collaboratorstatus is onvoldoende; systeem vereist eigen docent-leerlingcontext. | Niet van toepassing | Geen |
| ALT-004 | 4 | Actie betreft resultaten of geschiedenis | Collaboratorstatus is onvoldoende; systeem vereist eigen autorisatiecontext. | Niet van toepassing | Geen |
| ALT-005 | 4 | Actie betreft live meekijken | Collaboratorstatus is onvoldoende; systeem vereist eigen docent-leerlingrelatie en niveauautorisatie. | Niet van toepassing | Geen |
| ALT-006 | 5 | Collaboratorrecord is net gedeactiveerd | Systeem leest actuele status en blokkeert de mutatie. | Niet van toepassing | Geen |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Collaboratorrechten zijn niveaugebonden. |
| BR-002 | Een actieve collaborator mag onderwijsinhoud binnen dat niveau beheren volgens de toegestane contentacties. |
| BR-003 | Collaboratorstatus geeft geen leerlingtoegang. |
| BR-004 | Collaboratorstatus geeft geen resultaat- of geschiedenisrechten. |
| BR-005 | Collaboratorstatus geeft geen live-meekijkrecht. |
| BR-006 | De actuele eigenaar behoudt de zwaardere beheertaken zoals collaboratorbeheer en eigendomsoverdracht. |
| BR-007 | Elke contentwijziging wordt vastgelegd met de werkelijke uitvoerende gebruiker. |
| BR-008 | Server-side autorisatie is leidend; UI-state is nooit voldoende. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| ActionType | Moet worden geclassificeerd als content, leerlingbeheer, resultaat, geschiedenis, live of beheeractie. |
| LevelContext | Moet server-side uit het object of routepad worden afgeleid en gecontroleerd. |
| CollaboratorStatus | Alleen actieve records tellen mee. |
| Eigenaarstatus | Geeft bredere niveaubeheerrechten dan collaboratorstatus. |
| Auditactor | Moet altijd de echte uitvoerder zijn. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 7 | Context | Auditactor | De echte actor wordt doorgegeven aan vervolgmutaties. |
| 5 | Vervolgmutatie | LevelCategories/Exercises/ExerciseHistory | Alleen wanneer de onderliggende contentusecase mutaties uitvoert. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| LevelCollaborators | Deze usecase wijzigt collaboratorrecords niet. |
| StudentLevelAuthorizations | Collaboratorrechten maken geen leerlingautorisaties. |
| LiveViewAudit | Er start geen live meekijksessie door contentcollaboratie. |
| ExerciseRuns | Er ontstaan geen leerlingruns. |
| UserRelationships | Relaties worden niet aangepast. |
13. State diagram
Niet als zelfstandige statusflow. De usecase interpreteert de actuele status van LevelCollaborators en past autorisatie toe.
14. Decision flow
De decision flow onderscheidt eigenaar, actieve collaborator, onbevoegde docent en het type actie waarop rechten worden toegepast.
15. Data lifecycle diagram
Er ontstaat geen nieuw rechtrecord. Rechten worden afgeleid uit bestaande rol-, niveau-, eigenaar- en collaboratorgegevens.
16. Sequence diagrammen
16.1 Collaboratorrechten toepassen
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | De usecase gebruikt geen domeinspecifieke popup. | Autorisatie en weergave verlopen via routeguard, readmodel of bestaande pagina-afhandeling. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Collaboratorrechten expliciet begrenzen tot content binnen niveau en uitsluiten van leerling/resultaat/live-toegang. |
| Technisch Ontwerp | Technisch Ontwerp: oefencatalogus, autorisatie en logging en historie beschrijven de technische uitwerking. Centrale autorisatiepolicy voor niveau-eigenaar versus actieve collaborator uitwerken. |
| Software Requirements Specification | Requirements opnemen voor server-side handhaving van collaboratorrechten per actietype. |
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-afleiding | Dekt | Usecasecontext |
|---|---|---|
REQ-UC-DOC-SAM-004-001 | SRS-RDM-001 SRS-RDM-005 SRS-CAT-001 SRS-TCH-006 AC-RDM-001 AC-RDM-005 AC-CAT-001 AC-TCH-006 | Collaboratorrechten per niveau afleiden uit actieve LevelCollaborators |
REQ-UC-DOC-SAM-004-002 | SRS-CAT-001 SRS-TCH-006 SRS-CNT-001 AC-CAT-001 AC-TCH-006 AC-CNT-001 | Actieve collaborators contentbewerkrechten binnen het niveau kunnen geven |
REQ-UC-DOC-SAM-004-003 | SRS-AUTH-001 SRS-LRN-006 SRS-TCH-004 SRS-LIVE-001 AC-AUTH-001 AC-LRN-006 AC-TCH-004 AC-LIVE-001 | Voorkomen dat collaboratorstatus leerling-, resultaat- of live-meekijktoegang oplevert |
REQ-UC-DOC-SAM-004-004 | SRS-AUTH-001 SRS-TCH-001 SRS-CNT-004 AC-AUTH-001 AC-TCH-001 AC-CNT-004 | Directe URL- en API-aanroepen server-side controleren |
REQ-UC-DOC-SAM-004-005 | SRS-TCH-006 SRS-CNT-001 SRS-NFR-AUD-001 AC-TCH-006 AC-CNT-001 AC-NFR-AUD-001 | Contentwijzigingen van collaborators auditbaar vastleggen met de echte actor |