UC-GEN-PROF-002 — Profielgegevens wijzigen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-GEN-PROF-002 |
| Naam | Profielgegevens wijzigen |
| Domein | Profiel, voorkeuren en toegankelijkheid |
| Primaire actor | Ingelogde gebruiker |
| Secundaire actor(en) | Systeem, profielservice, gebruikersinstellingservice, autorisatieservice, identity-providerintegratie, validatieservice |
| Rolcontext | Iedere ingelogde gebruiker met toegang tot de normale applicatiecontext |
| Betrokken schermen | SCH-GEN-11-01 — Profiel |
| Gerelateerde usecases | UC-GEN-PROF-001 — Profiel bekijken; UC-GEN-PROF-003 — Verplicht niveau instellen; UC-GEN-PROF-004 — Profielfoto kiezen; UC-GEN-PROF-005 — Toegankelijkheidsinstellingen beheren; UC-GEN-PROF-007 — Voorkeuren beheren |
| Primaire entiteiten | Users, UserSettings |
| Secundaire entiteiten / events | identity-provideraccount, toegestane niveaucontext, profielvalidatie, ProfileUpdated, ProfileUpdateRejected, ProfileUpdateFailed, IdentityProviderAccountFlowStarted |
| Gerelateerde popups | POP-GEN-PROF-VALIDATION-FAILED, POP-GEN-PROF-SAVE-FAILED, POP-GEN-PROF-SAVED, POP-GEN-PROF-IDENTITY-REDIRECT |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must have |
2. Omschrijving
De gebruiker wijzigt de eigen profielgegevens op de profielpagina. Binnen OefenHub gaat het om applicatieprofielgegevens zoals naamgegevens en de actieve niveaucontext. Het systeem bepaalt de te wijzigen gebruiker altijd server-side op basis van de sessie. Een gebruiker kan via deze usecase alleen het eigen profiel wijzigen.
OefenHub beheert het aanvullende applicatieprofiel en gebruikersinstellingen. Authenticatie, wachtwoorden, sessies en de definitieve afhandeling van e-mailadreswijzigingen horen bij de identity provider. Daarom schrijft OefenHub geen wachtwoordwaarde weg en voert OefenHub geen volledige e-mailadreswijziging zelfstandig uit. Acties voor e-mailadres of wachtwoord starten een identity-providerflow of verwijzen daarnaar, afhankelijk van de gekozen technische integratie.
De wijziging van een profielfoto of avatar wordt niet in deze usecase uitgewerkt. Omdat profielafbeeldingen in OefenHub geen vrije uploads zijn maar vooraf gedefinieerde profielafbeeldingen, wordt het kiezen of verwijderen van zo’n afbeelding beschreven in UC-GEN-PROF-004.
Deze usecase beschrijft de normale wijzigingsflow, server-side validatie, objectautorisatie, veilige foutafhandeling en de datamutaties die ontstaan wanneer de gebruiker gewijzigde profielgegevens opslaat.
3. Scope
Deze usecase beschrijft:
- het openen van de bewerkmodus of wijzigbare profielvelden vanuit de eigen profielpagina;
- het server-side bepalen van de gebruiker die gewijzigd mag worden;
- het wijzigen van naamgegevens binnen het OefenHub-profiel;
- het wijzigen van de actieve niveaucontext wanneer de gebruiker meerdere toegestane niveaus heeft;
- het valideren van verplichte en optionele profielvelden;
- het blokkeren van gereserveerde of ongeldige waarden;
- het controleren dat een gekozen niveau binnen de toegestane context van de gebruiker valt;
- het opslaan van geldige profielwijzigingen;
- het bijwerken van auditvelden zoals
UpdatedByUserIdenUpdatedAtUtcwanneer deze op de betrokken records aanwezig zijn; - het tonen van veilige validatie- en foutmeldingen zonder technische details;
- het starten of verwijzen naar identity-providerflows voor e-mailadres en wachtwoord;
- requirement-afleiding voor profielwijzigingen.
Deze usecase beschrijft niet:
- het bekijken van profielgegevens zonder wijziging;
- het kiezen, vervangen of verwijderen van de profielfoto/avatar;
- het afdwingen van het verplicht instellen van een niveau bij een gebruiker zonder niveau;
- het beheren van toegankelijkheidsinstellingen;
- het synchroniseren van toegankelijkheidscookies;
- het beheren van algemene of rolgebonden voorkeuren;
- het aanpassen van rollen, relaties, autorisaties of accountstatus;
- het wijzigen van het e-mailadres als volledig OefenHub-proces;
- het wijzigen van wachtwoord, MFA, sessies of andere credentials;
- accountverwijdering, anonimiseren, deactiveren of account lifecycle-beheer;
- beheerderflows voor het wijzigen van andermans profiel;
- popupbeheer, seeddata of importdata.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd. |
| PRE-002 | De sessie is geldig en kan server-side aan precies één OefenHub-gebruiker worden gekoppeld. |
| PRE-003 | Het interne gebruikersprofiel bestaat. |
| PRE-004 | De gebruiker heeft toegang tot SCH-GEN-11-01 — Profiel. |
| PRE-005 | De gebruiker wijzigt uitsluitend het eigen profiel. |
| PRE-006 | De profielservice kan het eigen Users-record lezen en, bij geldige invoer, wijzigen. |
| PRE-007 | De gebruikersinstellingservice kan de relevante actieve niveaucontext lezen en, bij geldige invoer, wijzigen. |
| PRE-008 | De autorisatieservice kan bepalen welke niveaus voor de gebruiker als profielcontext beschikbaar zijn. |
| PRE-009 | De identity-providerintegratie of identity-providerroute is beschikbaar wanneer de gebruiker e-mailadres of wachtwoord wil wijzigen. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Alleen het profiel van de ingelogde gebruiker is gewijzigd. |
| POST-002 | Geldige wijzigingen in OefenHub-profielgegevens zijn opgeslagen in Users en/of de bijbehorende profielopslag. |
| POST-003 | Een geldige wijziging van actieve niveaucontext is opgeslagen in UserSettings of een functioneel gelijkwaardige gebruikersinstelling. |
| POST-004 | Auditvelden voor laatst gewijzigd door en laatst gewijzigd op zijn bijgewerkt wanneer deze op het betrokken record bestaan. |
| POST-005 | Ongeldige waarden zijn niet opgeslagen. |
| POST-006 | Een gekozen niveau dat buiten de toegestane context valt, is geweigerd en niet opgeslagen. |
| POST-007 | Wachtwoordwaarden zijn niet door OefenHub ontvangen of opgeslagen. |
| POST-008 | Een e-mailadreswijziging is niet als directe OefenHub-profielmutatie uitgevoerd; de gebruiker is naar de identity-providerflow geleid of krijgt de passende identity-provideractie aangeboden. |
| POST-009 | Een profielfoto-/avatarwijziging is niet binnen deze usecase opgeslagen. |
| POST-010 | De profielpagina toont na succesvolle opslag de actuele opgeslagen profielwaarden. |
| POST-011 | Bij validatiefouten blijft de gebruiker op de profielpagina en worden veilige veldgerichte meldingen getoond. |
| POST-012 | Bij technische opslagfouten blijft bestaande profieldata ongewijzigd of consistent teruggedraaid. |
| POST-013 | Bij verlopen sessie of ontbrekende login wordt de generieke loginflow gebruikt. |
| POST-014 | Bij ontbrekende autorisatie wordt de generieke toegang-geweigerd-afhandeling gebruikt. |
6. Trigger
De gebruiker opent de eigen profielpagina en kiest een wijzigactie, bijvoorbeeld Bewerken, Opslaan, E-mailadres wijzigen, Wachtwoord wijzigen of een gelijkwaardige actie binnen SCH-GEN-11-01 — Profiel.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Gebruiker | SCH-GEN-11-01 — Profiel | Opent de eigen profielpagina. | Het systeem toont de actuele profielgegevens. | Zie UC-GEN-PROF-001. |
| 2 | Gebruiker | Profielpagina | Kiest de wijzigmodus of past wijzigbare velden aan. | Het systeem maakt alleen de OefenHub-profielvelden wijzigbaar die binnen deze usecase vallen. | E-mailadres, wachtwoord en profielfoto volgen aparte routes. |
| 3 | Systeem | Routeguard | Controleert sessie en basisautorisatie. | Alleen een ingelogde gebruiker mag profielwijzigingen starten. | Loginstatus wordt server-side beoordeeld. |
| 4 | Systeem | Backend | Bepaalt de doelgebruiker uit de sessie. | Het systeem negeert client-side gebruikers-ID’s of gemanipuleerde routewaarden. | Een gebruiker wijzigt uitsluitend het eigen profiel. |
| 5 | Systeem | Profielservice | Laadt de huidige profielwaarden opnieuw voor validatiecontext. | De actuele bronwaarden worden als uitgangspunt genomen. | Voorkomt opslag op basis van verouderde of gemanipuleerde clientcontext. |
| 6 | Systeem | Autorisatieservice | Laadt toegestane niveauopties. | Alleen niveaus die voor de gebruiker functioneel toegestaan zijn, worden als keuze geaccepteerd. | Niveaukeuze is geen vrije invoer. |
| 7 | Gebruiker | Profielvelden | Wijzigt naamgegevens. | Het systeem accepteert invoer in de daarvoor bedoelde velden. | Voornaam, tussenvoegsel en achternaam worden veilig verwerkt. |
| 8 | Gebruiker | Niveauveld | Kiest een actief niveau wanneer meerdere toegestane niveaus beschikbaar zijn. | Het systeem registreert de gekozen waarde als kandidaatwijziging. | De waarde moet in de toegestane niveaucontext voorkomen. |
| 9 | Gebruiker | Profielpagina | Kiest Opslaan. | Het systeem start server-side validatie. | Client-side validatie is ondersteunend en niet leidend. |
| 10 | Systeem | Validatieservice | Valideert naamgegevens. | Ongeldige, lege verplichte of gereserveerde waarden worden geweigerd. | Waarde # is gereserveerd voor systeemgebruik als tussenvoegsel. |
| 11 | Systeem | Validatieservice | Valideert gekozen niveau. | Een niveau buiten de toegestane context wordt geweigerd. | Autorisatiecontrole vindt server-side plaats. |
| 12 | Systeem | Security / encoding | Normaliseert en beveiligt tekstwaarden voor opslag en latere rendering. | Invoer wordt veilig opgeslagen en later veilig geëncodeerd weergegeven. | Geen vrije HTML of scriptinhoud toestaan. |
| 13 | Systeem | Profielservice | Slaat geldige naamwijzigingen op. | Users of de functioneel bijbehorende profielopslag wordt bijgewerkt. | Actor en wijzigmoment worden vastgelegd waar auditvelden bestaan. |
| 14 | Systeem | Gebruikersinstellingservice | Slaat geldige actieve niveaucontext op. | UserSettings of functioneel gelijkwaardige opslag wordt bijgewerkt. | Wijziging kan invloed hebben op frontpage en oefencontext. |
| 15 | Systeem | Event/logging | Registreert de geslaagde profielwijziging. | ProfileUpdated of gelijkwaardige logische gebeurtenis wordt beschikbaar gemaakt. | Geen gevoelige credentialdata loggen. |
| 16 | Systeem | Profielpagina | Toont bevestiging. | De pagina toont de opgeslagen waarden en gebruikt POP-GEN-PROF-SAVED wanneer de profielpagina een expliciete popupbevestiging toont. | Popuptekst staat in het popupregister. |
| 17 | Gebruiker | Profielpagina | Controleert de gewijzigde gegevens. | De gebruiker blijft op de profielpagina of navigeert verder. | Geen verdere mutatie. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 3 | De gebruiker is niet ingelogd of de sessie is verlopen. | Het systeem start de generieke loginflow. | Generieke loginflow; geen profieldomeinpopup. | Geen. |
| ALT-002 | 3 | De gebruiker is ingelogd maar heeft geen toegang tot de normale applicatiecontext. | Het systeem weigert toegang via generieke toegang-geweigerd-afhandeling. | Generieke toegang-geweigerdmelding. | Geen. |
| ALT-003 | 4 | Clientinput bevat een andere UserId dan de sessiegebruiker. | Het systeem negeert de clientwaarde en gebruikt de sessiegebruiker, of weigert de actie als manipulatie wordt vastgesteld. | Generieke veilige foutmelding. | Geen. |
| ALT-004 | 5 | Het interne gebruikersprofiel bestaat niet of kan niet worden geladen. | Het systeem volgt de bestaande account-/provisioningfoutafhandeling. | Veilige foutmelding zonder technische details. | Geen profielwijziging. |
| ALT-005 | 7-10 | Een verplicht naamveld ontbreekt of bevat alleen witruimte. | Het systeem weigert opslag en toont veldgerichte validatie. | POP-GEN-PROF-VALIDATION-FAILED of inline validatie. | Geen. |
| ALT-006 | 7-10 | Een tekstveld overschrijdt de technisch toegestane lengte. | Het systeem weigert opslag en toont veldgerichte validatie. | POP-GEN-PROF-VALIDATION-FAILED of inline validatie. | Geen. |
| ALT-007 | 7-10 | Het tussenvoegsel bevat de gereserveerde waarde #. | Het systeem weigert de waarde omdat # gereserveerd is voor systeemgebruik. | POP-GEN-PROF-VALIDATION-FAILED of inline validatie. | Geen. |
| ALT-008 | 7-12 | Invoer bevat HTML, script of andere ongewenste actieve inhoud. | Het systeem weigert of neutraliseert de invoer volgens de centrale veiligheidsregels. | POP-GEN-PROF-VALIDATION-FAILED of inline validatie. | Geen onveilige inhoud. |
| ALT-009 | 8-11 | De gekozen niveaucontext is niet toegestaan voor de gebruiker. | Het systeem weigert opslag en toont dat de gekozen context niet beschikbaar is. | POP-GEN-PROF-VALIDATION-FAILED of inline validatie. | Geen. |
| ALT-010 | 8 | De gebruiker heeft maar één toegestane niveaucontext. | Het niveauveld kan read-only zijn of alleen die ene waarde tonen. | Geen popup. | Geen niveauwijziging tenzij de waarde geldig wordt opgeslagen met andere profielwijzigingen. |
| ALT-011 | 8 | De gebruiker heeft geen niveau terwijl een niveau verplicht is. | De normale profielwijziging kan worden gecombineerd met het instellen van een geldig niveau; de verplichte-niveauflow blijft leidend wanneer de gebruiker zonder niveau wil weggaan. | Verplichte-niveaucommunicatie hoort bij UC-GEN-PROF-003. | Alleen een geldige niveaukeuze wordt opgeslagen. |
| ALT-012 | 9 | De gebruiker kiest Annuleren of navigeert weg zonder op te slaan. | Het systeem verlaat de wijzigmodus zonder profielmutatie. | Eventuele waarschuwing voor niet-opgeslagen wijzigingen alleen wanneer centraal zo ingericht. | Geen. |
| ALT-013 | 9-14 | Er is gelijktijdig elders een profielwijziging uitgevoerd. | Het systeem gebruikt de actuele serverdata en voorkomt blind overschrijven wanneer concurrencycontrole dit vereist. | Veilige melding over verouderde gegevens. | Geen of alleen gecontroleerde opslag. |
| ALT-014 | 13-14 | Opslaan faalt door technische fout. | Het systeem rolt de transactie terug of bewaart consistente bestaande waarden. | POP-GEN-PROF-SAVE-FAILED. | Geen gedeeltelijke inconsistente mutatie. |
| ALT-015 | 16 | Bevestigingspopup kan niet worden getoond. | De pagina toont een inline succesmelding of bijgewerkte waarden. | Inline melding als fallback. | Profielwijziging blijft opgeslagen. |
| ALT-016 | 2 | De gebruiker kiest E-mailadres wijzigen. | Het systeem start of toont de identity-providerflow voor e-mailadreswijziging. | POP-GEN-PROF-IDENTITY-REDIRECT wanneer een toelichting nodig is. | Geen directe OefenHub-e-mailmutatie. |
| ALT-017 | 2 | De gebruiker kiest Wachtwoord wijzigen. | Het systeem start of toont de identity-providerflow voor wachtwoordwijziging. | POP-GEN-PROF-IDENTITY-REDIRECT wanneer een toelichting nodig is. | Geen OefenHub-wachtwoordmutatie. |
| ALT-018 | 2 | De gebruiker kiest Profielfoto wijzigen. | Het systeem start UC-GEN-PROF-004. | Afhankelijk van UC-GEN-PROF-004. | Niet binnen deze usecase. |
| ALT-019 | 10-14 | De wijziging leidt tot een actieve niveaucontext die niet meer aansluit op openstaande oefencontext. | Het systeem slaat alleen de profielcontext op; oefenruns uit andere niveaus worden niet hervat via deze profielactie. | Geen popup tenzij profielpagina dit toelicht. | Geen oefenrunmutatie. |
| ALT-020 | 15 | Logging of niet-kritieke eventpublicatie faalt na succesvolle opslag. | De profielwijziging blijft leidend; het systeem registreert de technische fout volgens loggingbeleid. | Geen technische details aan gebruiker. | Profielwijziging blijft opgeslagen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-UC-GEN-PROF-002-001 | Alleen een ingelogde gebruiker mag de eigen profielgegevens wijzigen. |
| BR-UC-GEN-PROF-002-002 | De server bepaalt de te wijzigen gebruiker op basis van de sessie. |
| BR-UC-GEN-PROF-002-003 | Een gebruiker mag via de normale profielpagina geen profiel van een andere gebruiker wijzigen. |
| BR-UC-GEN-PROF-002-004 | OefenHub beheert applicatieprofielgegevens; identity-providercredentials worden niet in OefenHub verwerkt. |
| BR-UC-GEN-PROF-002-005 | Wachtwoorden worden niet door OefenHub opgeslagen, gevalideerd of gelogd. |
| BR-UC-GEN-PROF-002-006 | E-mailadreswijzigingen worden niet als directe OefenHub-profielmutatie afgehandeld wanneer verificatie en bronhouderschap bij de identity provider liggen. |
| BR-UC-GEN-PROF-002-007 | Naamgegevens moeten server-side gevalideerd worden voordat zij worden opgeslagen. |
| BR-UC-GEN-PROF-002-008 | De waarde # is gereserveerd voor systeemgebruik en mag niet door gewone gebruikers als tussenvoegsel worden opgeslagen. |
| BR-UC-GEN-PROF-002-009 | Vrije HTML, scriptinhoud en andere actieve inhoud zijn niet toegestaan in profieltekstvelden. |
| BR-UC-GEN-PROF-002-010 | Actieve niveaucontext mag alleen worden gewijzigd naar een niveau dat de gebruiker functioneel mag gebruiken. |
| BR-UC-GEN-PROF-002-011 | Een profielwijziging mag geen rollen, relaties, autorisaties of accountstatus wijzigen. |
| BR-UC-GEN-PROF-002-012 | Een profielwijziging mag geen oefenruns starten, hervatten, afronden of verplaatsen naar een ander niveau. |
| BR-UC-GEN-PROF-002-013 | Profielafbeeldingen worden niet in deze usecase gewijzigd; profielfotokeuze hoort bij UC-GEN-PROF-004. |
| BR-UC-GEN-PROF-002-014 | Geslaagde profielwijzigingen worden herleidbaar vastgelegd via auditvelden of gelijkwaardige logging, zonder gevoelige identity-providergegevens. |
| BR-UC-GEN-PROF-002-015 | Validatie- en foutmeldingen mogen geen technische identifiers, stacktraces, ExternalId-waarden, databasefouten of identity-providerdetails tonen. |
Centrale business rules die hierbij horen:
| BusinessRule-ID | Toepassing |
|---|---|
BR-GEN-SEC-001 | Alle afgeschermde acties vereisen server-side rol-, relatie- of objectcontrole. |
BR-GEN-PROF-001 | Een gebruiker mag via de normale profielpagina uitsluitend het eigen profiel bekijken en beheren. |
BR-GEN-PROF-002 | OefenHub beheert applicatieprofielgegevens; identity-providercredentials worden niet in OefenHub verwerkt. |
BR-GEN-PROF-004 | Actieve niveaucontext moet worden afgeleid uit toegestane gebruikers- en rolcontext. |
BR-GEN-SEC-002 | Gebruikersinvoer wordt server-side gevalideerd, veilig verwerkt en veilig gerenderd. |
BR-GEN-ACC-001 | Account- en credentialflows blijven binnen de identity-providerverantwoordelijkheid voor zover daar bronhouderschap ligt. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Sessie | Moet geldig zijn en aan precies één interne OefenHub-gebruiker gekoppeld kunnen worden. |
| Client-side gebruikers-ID | Mag niet bepalen welk profiel wordt gewijzigd. |
Users.Id | Wordt afgeleid uit de server-side sessie. |
Users.ExternalId | Mag niet zichtbaar of bewerkbaar zijn op de profielpagina. |
| Voornaam | Verplicht wanneer het profielmodel dit vereist; trimmen, veilige lengtecontrole en veilige encoding zijn verplicht. |
| Tussenvoegsel | Optioneel; trimmen, veilige lengtecontrole en blokkeren van gereserveerde waarde # zijn verplicht. |
| Achternaam | Verplicht wanneer het profielmodel dit vereist; trimmen, veilige lengtecontrole en veilige encoding zijn verplicht. |
| Naamvelden algemeen | Vrije HTML, JavaScript, actieve inhoud en ongewenste markup zijn niet toegestaan. |
| E-mailadres | Niet als directe OefenHub-profielmutatie opslaan; wijziging loopt via identity-providerflow. |
| Wachtwoord | Niet door OefenHub ontvangen, opgeslagen, gelogd of gevalideerd. |
| Actief niveau | Moet voorkomen in de server-side toegestane niveaucontext van de gebruiker. |
| Niveau-opties | Worden server-side opgebouwd; client-side opties zijn niet leidend. |
| Profielavatar | Niet binnen deze usecase wijzigen; avatarwijziging hoort bij UC-GEN-PROF-004. |
| Auditvelden | UpdatedByUserId moet overeenkomen met de sessiegebruiker; UpdatedAtUtc wordt door de server bepaald. |
| Foutmeldingen | Gebruikersgericht formuleren; geen GUID’s, stacktraces, ExternalId, databasefouten, tokens of identity-providerdetails tonen. |
| Logging | Geen wachtwoorden, tokens, secrets, verificatielinks of gevoelige headers loggen. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 3 | Read / autorisatie | sessie, gebruikerscontext | Controleren of de gebruiker profielwijzigingen mag starten. |
| 4 | Read | Users | Doelgebruiker bepalen uit de sessie. |
| 5 | Read | Users | Actuele profielwaarden opnieuw laden. |
| 6 | Read | niveau- en autorisatiecontext | Toegestane niveauopties bepalen. |
| 10 | Validatie | profielinvoer | Naamgegevens server-side valideren. |
| 11 | Validatie | actieve niveaucontext | Gekozen niveau server-side valideren. |
| 13 | Update | Users | Geldige OefenHub-profielvelden bijwerken, zoals naamgegevens. |
| 13 | Update / audit | Users.UpdatedByUserId, Users.UpdatedAtUtc | Laatste wijziging vastleggen wanneer deze velden aanwezig zijn. |
| 14 | Update | UserSettings | Geldige actieve niveaucontext opslaan wanneer die is gewijzigd. |
| 14 | Update / audit | UserSettings.UpdatedByUserId, UserSettings.UpdatedAtUtc | Laatste wijziging vastleggen wanneer deze velden aanwezig zijn. |
| 15 | Event / logging | ProfileUpdated | Geslaagde profielwijziging logisch registreren. |
| ALT-005 t/m ALT-009 | Event / logging | ProfileUpdateRejected | Validatie- of autorisatieafwijzing veilig registreren volgens centraal loggingbeleid. |
| ALT-014 | Event / logging | ProfileUpdateFailed | Technische opslagfout veilig registreren. |
| ALT-016 / ALT-017 | Event / navigatie | IdentityProviderAccountFlowStarted | Identity-providerflow starten of naar identity-providerroute verwijzen. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| Identity-providercredentials | Wachtwoord, MFA, sessies en credential lifecycle worden niet door OefenHub gemuteerd. |
| Definitief identity-provider e-mailadres | Verificatie en bronhouderschap liggen bij de identity provider; OefenHub schrijft dit niet rechtstreeks als profielmutatie weg. |
ProfileAvatars | Profielfoto kiezen hoort bij UC-GEN-PROF-004. |
UserRoles | Profiel wijzigen kent geen rollen toe en verwijdert geen rollen. |
UserRelationships | Profiel wijzigen maakt, accepteert, wijzigt of beëindigt geen relaties. |
RelationshipInvitations | Profiel wijzigen verwerkt geen relatie-uitnodigingen. |
SystemMessages | Normale profielwijziging maakt geen systeembericht aan. |
PrivateMessageThreads | Profiel wijzigen maakt of wijzigt geen privéberichtthread. |
Tickets | Profiel wijzigen maakt of wijzigt geen melding. |
ExerciseRuns | Profiel wijzigen start, hervat, verplaatst of sluit geen oefenrun. |
| Toegankelijkheidscookie | Cookie-synchronisatie hoort bij UC-GEN-PROF-006. |
| Accountlifecycle- of anonimiseringsrecords | Accountverwijdering en anonimiseren vallen buiten dit domein. |
13. State diagram
Niet van toepassing als afzonderlijk statusdiagram. Deze usecase wijzigt profiel- en gebruikersinstellingsgegevens, maar introduceert geen eigen statusobject met meerdere formele statusovergangen. De wijziging van actieve niveaucontext is een gebruikersinstelling en geen statusmodel.
14. Decision flow — profielgegevens wijzigen
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Profielgegevens opslaan
16.2 Identity-provideractie vanuit profiel
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
POP-GEN-PROF-VALIDATION-FAILED | Bij ongeldige profielinvoer of niet-toegestane niveaukeuze. | De gebruiker veilig informeren dat de invoer gecorrigeerd moet worden. |
POP-GEN-PROF-SAVE-FAILED | Bij technische of transactionele opslagfout. | De gebruiker informeren dat opslaan niet is gelukt zonder technische details te tonen. |
POP-GEN-PROF-SAVED | Na succesvolle opslag wanneer de profielpagina een expliciete popupbevestiging gebruikt. | Bevestigen dat de profielwijziging is opgeslagen. |
POP-GEN-PROF-IDENTITY-REDIRECT | Wanneer de gebruiker e-mailadres of wachtwoord wil wijzigen en naar de identity-providerflow wordt geleid. | Uitleggen dat deze actie buiten OefenHub door de identity provider wordt afgehandeld. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijf de profielpagina als eigen profielpagina met wijzigbare OefenHub-profielgegevens, gescheiden identity-provideracties en aparte routes voor profielfoto, voorkeuren en toegankelijkheid. |
| Functioneel Ontwerp | Beschrijft welke profielvelden direct in OefenHub wijzigbaar zijn en welke acties alleen doorverwijzen naar de identity provider. |
| Functioneel Ontwerp | Beschrijft dat actieve niveaucontext alleen uit toegestane niveaus gekozen mag worden en dat dit de context van de applicatie kan beïnvloeden. |
| Functioneel Ontwerp | Beschrijf veldvalidaties, fouttoestanden, annuleergedrag en veilige gebruikersmeldingen. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, security en omgevingen, Blazor frontend | Beschrijft hoe Users, UserSettings, identity-provideraccountdata en eventuele synchronisatievelden van elkaar gescheiden blijven. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, security en omgevingen, Blazor frontend | Werk server-side objectautorisatie uit: de sessiegebruiker bepaalt altijd welk profiel gewijzigd wordt. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, security en omgevingen, Blazor frontend | Werk transactionele opslag uit voor gecombineerde wijzigingen in profielgegevens en actieve niveaucontext. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, security en omgevingen, Blazor frontend | Beschrijft hoe e-mailadres- en wachtwoordacties naar Keycloak of de gekozen identity-providerroute verwijzen zonder credentials in OefenHub te verwerken. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, security en omgevingen, Blazor frontend | Beschrijft loggingregels vast voor profielwijzigingen zonder wachtwoorden, tokens, secrets of gevoelige identity-providerdetails te loggen. |
| Software Requirements Specification | Bevat requirements voor eigen-profiel-autorisatie, profielvalidatie, toegestane niveaukeuze, veilige opslag, identity-providerafbakening en foutafhandeling. |
| Database-informatie | Beschrijft Users en UserSettings als bron voor profielgegevens, actieve niveaucontext en relevante wijzigingsmetadata. |
| Ontwerpbronnen | Voeg of actualiseer business rules, commands, events, popupregisterregels en matrices voor profielwijzigingen. |
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-GEN-PROF-002-001 | SRS-RDM-001 SRS-ACC-003 AC-RDM-001 AC-ACC-003 | Een ingelogde gebruiker toestaan om uitsluitend het eigen profiel via de profielpagina te wijzigen |
REQ-UC-GEN-PROF-002-002 | SRS-AUTH-001 SRS-ACC-003 AC-AUTH-001 AC-ACC-003 | De te wijzigen gebruiker server-side bepalen op basis van de sessie en niet op basis van clientinput |
REQ-UC-GEN-PROF-002-003 | SRS-AUTH-001 SRS-ACC-003 AC-AUTH-001 AC-ACC-003 | Naamgegevens server-side valideren voordat zij worden opgeslagen |
REQ-UC-GEN-PROF-002-004 | SRS-AUTH-001 SRS-ACC-003 AC-AUTH-001 AC-ACC-003 | Gereserveerde systeemwaarden zoals # blokkeren voor gewone gebruikersinvoer waar deze waarde niet is toegestaan |
REQ-UC-GEN-PROF-002-005 | SRS-ACC-003 SRS-CAT-006 AC-ACC-003 AC-CAT-006 | Actieve niveaucontext alleen kunnen opslaan wanneer het gekozen niveau binnen de toegestane context van de gebruiker valt |
REQ-UC-GEN-PROF-002-006 | SRS-ACC-003 AC-ACC-003 | Geldige profielwijzigingen opslaan in de daarvoor bedoelde OefenHub-profiel- en gebruikersinstellingsrecords |
REQ-UC-GEN-PROF-002-007 | SRS-ACC-003 AC-ACC-003 | Na succesvolle opslag de bijgewerkte profielwaarden tonen |
REQ-UC-GEN-PROF-002-008 | SRS-ACC-003 SRS-NFR-SEC-001 AC-ACC-003 AC-NFR-SEC-001 | Wachtwoordwaarden niet ontvangen, opslaan, valideren of loggen binnen OefenHub-profielwijzigingen |
REQ-UC-GEN-PROF-002-009 | SRS-RDM-001 SRS-ACC-003 SRS-NFR-SEC-001 AC-RDM-001 AC-ACC-003 AC-NFR-SEC-001 | E-mailadres- en wachtwoordacties vanuit de profielpagina via de identity-providerflow afhandelen of daarnaar verwijzen |
REQ-UC-GEN-PROF-002-010 | SRS-ACC-003 SRS-SHR-001 SRS-NFR-SEC-001 AC-ACC-003 AC-SHR-001 AC-NFR-SEC-001 | Technische opslagfouten veilig afhandelen zonder gedeeltelijke inconsistente profielmutaties zichtbaar te maken |
REQ-UC-GEN-PROF-002-011 | SRS-ACC-003 SRS-TIC-002 SRS-NFR-SEC-001 AC-ACC-003 AC-TIC-002 AC-NFR-SEC-001 | Validatie- en foutmeldingen tonen zonder technische identifiers, stacktraces, tokens, ExternalId-waarden of databasefouten |
REQ-UC-GEN-PROF-002-012 | SRS-ACC-003 SRS-NFR-AUD-001 SRS-NFR-LOG-001 AC-ACC-003 AC-NFR-AUD-001 AC-NFR-LOG-001 | Profielwijzigingen herleidbaar registreren via auditvelden of gelijkwaardige logging, zonder gevoelige identity-providergegevens |