Skip to main content

UC-DOC-SAM-006 — Overdracht naar ongeldige kandidaat blokkeren

1. Kerngegevens

VeldWaarde
Usecase-IDUC-DOC-SAM-006
NaamOverdracht naar ongeldige kandidaat blokkeren
DomeinDocent
SubdomeinSamenwerking, collaborators en eigenaarschap
Primaire actorSysteem
Secundaire actor(en)Docent
RolcontextDocentcontext bij poging tot eigendomsoverdracht
Betrokken schermenDocent - Eigenaarschap overdragen, routeguard, backendvalidatie
Gerelateerde usecasesUC-DOC-SAM-001, UC-DOC-SAM-002, UC-DOC-SAM-004, UC-DOC-SAM-005, UC-DOC-SAM-007
Primaire entiteitenLevels, LevelCollaborators, Users, UserRoles
Secundaire entiteiten / eventsAutorisatiecontext, validatiefout, accountlogging, popupverwijzing
Gerelateerde popupsPOP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKED
PopupregisterCentrale popupregisterregel(en) op PopupKey-niveau.
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft de blokkeerroute wanneer een gebruiker probeert eigenaarschap van een niveau over te dragen aan een ongeldige kandidaat.

De usecase is bewust een negatieve autorisatie- en validatieflow bij UC-DOC-SAM-005. Hij voorkomt dat eigenaarschap via manipulatie van routeparameters, oude browserstate of handmatige API-aanroep buiten de toegestane collaboratorlijst terechtkomt.

Een ongeldige kandidaat kan bijvoorbeeld een docent zonder actieve collaboratorstatus zijn, een inactieve gebruiker, de actuele eigenaar zelf, een docent buiten de docent-docentrelatiecontext of een gebruiker zonder actieve docentrol.

De blokkade voert geen domeinmutatie uit. Technische beveiligingslogging blijft gescheiden van domeinhistorie; er ontstaat geen ownershiphistorie alsof er een overdracht heeft plaatsgevonden.

3. Scope

Binnen scope

  • Server-side valideren van actor, niveau en kandidaat bij eigendomsoverdracht.
  • Blokkeren van kandidaten die geen actieve collaborator zijn.
  • Blokkeren van kandidaten zonder actieve docentrol of zonder geldig intern account.
  • Blokkeren van overdracht naar de actuele eigenaar zelf.
  • Blokkeren van overdracht wanneer het niveau niet meer bestaat of niet toegankelijk is.
  • Teruggeven van veilige, niet-informatielekkende foutafhandeling.
  • Technisch loggen van verdachte of inconsistente pogingen waar relevant.

Buiten scope

  • Een geldige overdracht uitvoeren.
  • Collaborators toevoegen om een kandidaat geldig te maken.
  • Docent-docentrelaties aanmaken.
  • Gebruikersrollen wijzigen.
  • Beheerder-forceerroute voor uitzonderingen.
  • Relatie-uitnodigingen versturen.

4. Pre-condities

IDVoorwaarde
PRE-001Er wordt een poging gedaan om eigenaarschap over te dragen.
PRE-002Er is een opgegeven niveaucontext.
PRE-003Er is een opgegeven kandidaat voor nieuwe eigenaar.
PRE-004De backend kan actuele niveau-, rol- en collaboratorstatus opnieuw uitlezen.

5. Post-condities

IDResultaat
POST-001De overdracht is niet uitgevoerd.
POST-002Levels.OwnerUserId is ongewijzigd gebleven.
POST-003Er is geen nieuwe ownershiphistorie voor een succesvolle overdracht aangemaakt.
POST-004De gebruiker krijgt een veilige blokkade- of validatieafhandeling.
POST-005Verdachte of inconsistente pogingen kunnen technisch zijn gelogd.

6. Trigger

Een docent of client probeert eigenaarschap over te dragen aan een kandidaat die server-side niet voldoet aan de geldigheidsregels.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1Docent / ClientEigenaarschap overdragenVerstuurt overdrachtsverzoekBackend ontvangt commandTransferLevelOwnership
2SysteemBackend autorisatieLaadt actor, niveau en kandidaatBepaalt actuele contextUsers, Levels
3SysteemBackend autorisatieControleert of actor actuele eigenaar isBlokkeert wanneer actor geen eigenaar isLevels.OwnerUserId
4SysteemKandidaatvalidatieControleert actieve docentrol kandidaatBlokkeert kandidaten zonder actieve docentrolUserRoles, Roles
5SysteemKandidaatvalidatieControleert actieve collaboratorstatus kandidaat op dit niveauBlokkeert kandidaten buiten collaboratorlijstLevelCollaborators
6SysteemKandidaatvalidatieControleert dat kandidaat niet gelijk is aan actuele eigenaarBlokkeert noop-overdrachtUsers.Id
7SysteemKandidaatvalidatieControleert accountstatus kandidaatBlokkeert gedeactiveerde of geanonimiseerde accountsUsers.IsActive
8SysteemBeslissingStelt vast dat kandidaat ongeldig isTransactie wordt niet gestart of direct afgebrokenBusiness rules
9SysteemLoggingLegt technische of verdachte poging vast waar relevantGeen domeinevent voor geslaagde overdrachtAccount/applicatielog
10FrontendEigenaarschap overdragenToont veilige blokkade-afhandelingGeen datamutatiePopup of routeguard

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Actor is geen actuele eigenaarSysteem blokkeert de hele overdrachtsactie.POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDGeen
ALT-0024Kandidaat heeft geen actieve docentrolSysteem weigert de kandidaat.POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDGeen
ALT-0035Kandidaat is geen actieve collaborator van dit niveauSysteem weigert de kandidaat.POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDGeen
ALT-0046Kandidaat is dezelfde gebruiker als huidige eigenaarSysteem weigert de overdracht omdat er geen nieuwe eigenaar ontstaat.POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDGeen
ALT-0057Kandidaataccount is gedeactiveerd of geanonimiseerdSysteem weigert de kandidaat.POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDGeen
ALT-0062Niveau bestaat niet of is niet toegankelijkSysteem toont niet-beschikbaarafhandeling zonder objectdetails te lekken.Niet van toepassingGeen
ALT-0071Verzoek komt via directe API-aanroep met gemanipuleerde IDsBackend voert dezelfde validaties uit en blokkeert het verzoek.Niet van toepassingGeen

9. Business rules

IDRegel
BR-001Een ongeldige kandidaat mag nooit eigenaar van een niveau worden.
BR-002De backend valideert actor en kandidaat onafhankelijk van de UI.
BR-003Alleen actieve collaborators van hetzelfde niveau zijn geldige eigenaarschapskandidaten.
BR-004Een kandidaat moet een actief intern account en een actieve docentrol hebben.
BR-005Overdracht naar de actuele eigenaar zelf is niet toegestaan als eigendomsoverdracht.
BR-006Een blokkade schrijft geen succesvolle ownershiphistorie.
BR-007Foutmeldingen mogen geen ongeautoriseerde informatie over gebruikers of niveaus lekken.
BR-008Herhaald ongeldige of verdachte pogingen mogen technisch worden gelogd.

10. Datavalidatie

Veld / objectValidatie
ActorUserIdMoet actuele eigenaar zijn voor het niveau.
CandidateUserIdMoet bestaan, actief zijn en een actieve docentrol hebben.
LevelCollaboratorMoet actief zijn voor dezelfde LevelId.
SelfTransferKandidaat mag niet gelijk zijn aan de huidige eigenaar.
LevelContextMoet bestaan en beschikbaar zijn voor actor.
ErrorResponseMoet veilig zijn en geen ongeautoriseerde objectdetails tonen.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
9LogApplicatielog/accountlogOngeldige of verdachte poging kan technisch worden vastgelegd.
8Geen domeinmutatieLevelsOwnerUserId blijft ongewijzigd.

12. Geen datamutaties

EntiteitReden
LevelsEigenaarschap wordt niet gewijzigd.
LevelCollaboratorsEr wordt geen collaborator aangemaakt, geactiveerd of gedeactiveerd.
LevelOwnershipHistoryEr wordt geen succesvolle overdracht geregistreerd.
SystemMessagesEr wordt geen overdrachtsbericht aangemaakt voor een mislukte overdracht.
UserRelationshipsRelaties worden niet gewijzigd.
UserRolesRollen worden niet gewijzigd.

13. State diagram

Er is geen toegestane state transition. Het niveau blijft in de bestaande eigenaarschapstoestand.

14. Decision flow

De decision flow toont dat één falende validatie voldoende is om de overdracht te blokkeren.

15. Data lifecycle diagram

Bij een geblokkeerde overdracht blijven alle bronrecords ongewijzigd. Alleen veilige foutafhandeling en technische beveiligingslogging buiten de domeinhistorie kunnen plaatsvinden.

16. Sequence diagrammen

16.1 Ongeldige kandidaat blokkeren

17. Popupverwijzingen

PopupKeyMomentDoel
POP-DOC-SAM-TRANSFER-OWNERSHIP-BLOCKEDWanneer kandidaat of actor ongeldig isVoorkomt onduidelijke of technische foutafhandeling voor de gebruiker.

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

DoeldocumentAfleiding
Functioneel OntwerpBeschrijven dat alleen actieve collaborators geldige eigenaarschapskandidaten zijn en dat ongeldige kandidaten veilig worden geblokkeerd.
Technisch OntwerpTechnisch Ontwerp: oefencatalogus, autorisatie en logging en historie beschrijven de technische uitwerking. Server-side validatie, foutafhandeling, logging en geen-mutatiegedrag uitwerken.
Software Requirements SpecificationRequirements opnemen voor blokkeren van ongeldige kandidaat, directe API-aanroepen en veilige foutafhandeling.

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-SAM-006-001SRS-AUTH-001
SRS-TCH-001
AC-AUTH-001
AC-TCH-001
Eigendomsoverdracht blokkeren wanneer de actor niet de actuele eigenaar is
REQ-UC-DOC-SAM-006-002SRS-AUTH-001
SRS-CAT-001
SRS-TCH-006
AC-AUTH-001
AC-CAT-001
AC-TCH-006
Eigendomsoverdracht blokkeren wanneer de kandidaat geen actieve collaborator van het niveau is
REQ-UC-DOC-SAM-006-003SRS-AUTH-001
SRS-TCH-001
AC-AUTH-001
AC-TCH-001
Eigendomsoverdracht blokkeren wanneer de kandidaat geen actieve docentrol heeft
REQ-UC-DOC-SAM-006-004SRS-AUTH-001
SRS-TCH-001
SRS-NFR-PRV-001
AC-AUTH-001
AC-TCH-001
AC-NFR-PRV-001
Eigendomsoverdracht blokkeren wanneer de kandidaat gedeactiveerd of geanonimiseerd is
REQ-UC-DOC-SAM-006-005SRS-AUTH-001
SRS-TCH-001
AC-AUTH-001
AC-TCH-001
Eigendomsoverdracht naar de huidige eigenaar zelf blokkeren
REQ-UC-DOC-SAM-006-006SRS-TCH-001
AC-TCH-001
Bij een geblokkeerde overdracht geen succesvolle ownershiphistorie schrijven
REQ-UC-DOC-SAM-006-007SRS-TCH-001
AC-TCH-001
Directe of gemanipuleerde API-aanroepen met dezelfde validaties behandelen als UI-acties
REQ-UC-DOC-SAM-006-008SRS-AUTH-001
SRS-TCH-001
SRS-NFR-SEC-001
SRS-NFR-AVL-001
AC-AUTH-001
AC-TCH-001
AC-NFR-SEC-001
AC-NFR-AVL-001
Veilige foutafhandeling tonen zonder ongeautoriseerde details te lekken