UC-GEN-PROF-001 — Profiel bekijken
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-GEN-PROF-001 |
| Naam | Profiel bekijken |
| Domein | Profiel, voorkeuren en toegankelijkheid |
| Primaire actor | Ingelogde gebruiker |
| Secundaire actor(en) | Systeem, profielservice, gebruikersinstellingservice, identity-providerintegratie, autorisatieservice |
| Rolcontext | Iedere ingelogde gebruiker met toegang tot de normale applicatiecontext |
| Betrokken schermen | SCH-GEN-11-01 — Profiel |
| Gerelateerde usecases | UC-GEN-PROF-002 — Profielgegevens wijzigen; 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; UC-GEN-REL-001 — Relaties bekijken |
| Primaire entiteiten | Users, UserSettings, ProfileAvatars |
| Secundaire entiteiten / events | identity-providerstatus, rolcontext, toegestane niveaucontext, relatie-readmodel, ProfileViewFailed |
| Gerelateerde popups | Geen domeinspecifieke popup in de normale kijkflow |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must have |
2. Omschrijving
De gebruiker opent de eigen profielpagina om de binnen OefenHub bekende profielgegevens te bekijken. Het profielscherm toont de actuele profielweergave, persoonsgegevens, actief niveau en accountbeveiligingsinformatie. De pagina maakt expliciet onderscheid tussen het OefenHub-applicatieprofiel en de onderliggende identity-provideromgeving.
Het systeem bepaalt de te tonen gebruiker altijd op basis van de server-side sessie. Een gebruiker kan via deze usecase alleen het eigen profiel bekijken. Clientinput, routeparameters of manipulatie van een gebruikers-ID mogen nooit bepalen welk profiel wordt geladen.
De profielpagina toont dynamische gegevens uit het eigen gebruikersprofiel, bijbehorende gebruikersinstellingen, vooraf gedefinieerde profielavatar of initialenweergave, toegestane niveaucontext en beperkte accountstatusinformatie. Wachtwoorden, tokens, secrets, externe identity-provider-ID’s en technische identifiers worden niet getoond.
Deze usecase beschrijft alleen het bekijken van de profielpagina. Het wijzigen van profielgegevens, het kiezen of verwijderen van een profielfoto, het verplicht instellen van een niveau en het beheren van voorkeuren of toegankelijkheid worden in afzonderlijke usecases beschreven.
3. Scope
Deze usecase beschrijft:
- het openen van de eigen profielpagina vanuit de ingelogde applicatiecontext;
- het server-side bepalen van de actuele gebruiker op basis van de sessie;
- het laden van profielgegevens, profielavatar, gebruikersinstellingen en toegestane niveaucontext;
- het tonen van de scheiding tussen Profiel, Voorkeuren en Toegankelijkheid;
- het tonen van de huidige profielfoto of initialenweergave;
- het tonen van persoonsgegevens zoals voornaam, tussenvoegsel, achternaam, e-mailadres en actief niveau;
- het tonen van read-only accountbeveiligingsinformatie zonder gevoelige accountgegevens;
- het tonen van relatie-informatie wanneer die voor de rolcontext relevant is, zoals gekoppelde ouder/voogd of docent bij een leerling;
- het omgaan met ontbrekende avatar, ontbrekende niveaucontext, ontbrekende niet-kritieke accountstatus en foutieve of geblokkeerde toegang;
- het voorkomen dat mockupwaarden als vaste productiegegevens worden geïnterpreteerd;
- requirement-afleiding voor de kijkflow.
Deze usecase beschrijft niet:
- het opslaan of wijzigen van profielgegevens;
- het starten of afronden van e-mailwijziging via de identity provider;
- het wijzigen van wachtwoord of credentialgegevens;
- het kiezen of verwijderen van een profielfoto;
- het afdwingen van het verplicht instellen van een niveau;
- het beheren van toegankelijkheidsinstellingen;
- het synchroniseren van toegankelijkheidscookies;
- het beheren van algemene voorkeuren;
- het bekijken of beheren van relaties op de relatiepagina;
- 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 of kan volgens de provisioningregels beschikbaar worden gemaakt. |
| PRE-004 | De gebruiker heeft toegang tot de normale applicatiecontext waarin de profielpagina beschikbaar is. |
| PRE-005 | De profielpagina is bereikbaar via het profielmenu of een gelijkwaardige geldige route. |
| PRE-006 | De profielservice kan Users en relevante UserSettings voor de ingelogde gebruiker lezen. |
| PRE-007 | De identity-providerintegratie of gesynchroniseerde accountstatus kan minimaal beperkte accountstatusinformatie leveren wanneer die op het scherm wordt getoond. |
| PRE-008 | De autorisatieservice kan bepalen welke niveaus, rollen en relatie-informatie binnen de actuele gebruikerscontext zichtbaar mogen zijn. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De profielpagina toont uitsluitend gegevens van de ingelogde gebruiker. |
| POST-002 | De pagina toont geen profielgegevens van andere gebruikers. |
| POST-003 | De zichtbare profielwaarden zijn dynamisch opgebouwd uit profieldata, gebruikersinstellingen en geautoriseerde contextdata. |
| POST-004 | Wanneer een profielavatar is ingesteld en actief beschikbaar is, wordt deze weergegeven. |
| POST-005 | Wanneer geen profielavatar beschikbaar is, wordt een initialenweergave of gelijkwaardige fallback getoond. |
| POST-006 | De beschikbare niveau-informatie is afgeleid uit de toegestane context van de gebruiker. |
| POST-007 | Accountbeveiligingsinformatie is read-only en toont geen wachtwoord, token, secret, Keycloak-ID, externe identity-provider-ID of gevoelige sessiedata. |
| POST-008 | Relatie-informatie wordt alleen getoond wanneer deze voor de rolcontext is toegestaan en functioneel relevant is. |
| POST-009 | Het openen van de profielpagina veroorzaakt geen profielmutatie, geen avatarwijziging, geen gebruikersinstellingwijziging en geen relatie-mutatie. |
| POST-010 | Bij ontbrekende of niet-toegankelijke gegevens worden geen technische details aan de gebruiker getoond. |
| POST-011 | Bij verlopen sessie of ontbrekende login wordt de generieke loginflow gebruikt. |
| POST-012 | Bij ontbrekende autorisatie wordt de generieke toegang-geweigerd-afhandeling gebruikt. |
6. Trigger
De gebruiker opent de pagina Profiel vanuit het profielmenu of via een geldige profielroute binnen de ingelogde applicatiecontext.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Gebruiker | Profielmenu / navigatie | Kiest Profiel. | Het systeem navigeert naar SCH-GEN-11-01 — Profiel. | De route start geen mutatie. |
| 2 | Systeem | Routeguard | Controleert sessie en basisautorisatie. | Alleen een ingelogde gebruiker mag de profielpagina openen. | Loginstatus wordt server-side beoordeeld. |
| 3 | Systeem | Backend | Bepaalt de doelgebruiker uit de sessie. | Het systeem negeert eventuele client-side gebruikers-ID’s. | Een gebruiker bekijkt uitsluitend het eigen profiel. |
| 4 | Systeem | Profielservice | Laadt profielgegevens. | Naamgegevens, e-mailadresreferentie, avatarverwijzing en relevante profielcontext worden opgehaald. | Bron is Users en gekoppelde profieldata. |
| 5 | Systeem | Gebruikersinstellingservice | Laadt relevante gebruikersinstellingen. | Actieve niveaucontext en profielgerelateerde instellingen worden opgehaald. | Bron is UserSettings of functioneel gelijkwaardige opslag. |
| 6 | Systeem | Avatarreadmodel | Controleert avatarverwijzing. | De huidige avatar of fallback wordt voorbereid. | Vrije uploads zijn niet van toepassing. |
| 7 | Systeem | Autorisatieservice | Bepaalt toegestane niveaucontext. | Alleen niveaus waarvoor de gebruiker functioneel toegang heeft, worden beschikbaar gemaakt. | Geen technische ID’s als gebruikersgerichte waarde tonen. |
| 8 | Systeem | Identity-providerintegratie / accountstatusreadmodel | Bepaalt read-only accountstatus. | De pagina kan e-mailbevestiging, wachtwoordstatus en laatste aanmelding als veilige status tonen. | Wachtwoorden en secrets blijven buiten OefenHub. |
| 9 | Systeem | Relatie-readmodel | Bepaalt rolafhankelijke relatie-informatie. | Voor een leerling kan worden getoond met welke ouder/voogd of docent een koppeling bestaat en sinds wanneer. | Alleen geautoriseerde relatie-informatie tonen. |
| 10 | Systeem | SCH-GEN-11-01 — Profiel | Toont introductieblok. | De pagina maakt duidelijk dat profiel, voorkeuren en toegankelijkheid gescheiden onderdelen zijn. | Verwijzingen naar voorkeuren/toegankelijkheid zijn navigatie; geen inhoudelijke uitwerking. |
| 11 | Systeem | Kaart Profielfoto | Toont huidige profielweergave. | Avatar of initialenweergave wordt getoond. | Profielavatar komt uit ProfileAvatars; fallback uit naamgegevens. |
| 12 | Systeem | Kaart Persoonsgegevens | Toont profielvelden. | Voornaam, tussenvoegsel, achternaam, e-mailadres en actief niveau worden weergegeven. | Waarden zijn dynamisch en niet hardcoded. |
| 13 | Systeem | Kaart Accountbeveiliging | Toont accountbeveiligingsstatus. | Wachtwoordstatus, e-mailbevestiging en laatste aanmelding worden als veilige statusinformatie getoond. | Geen wachtwoordwaarde of token tonen. |
| 14 | Systeem | Profielpagina | Toont beschikbare vervolgacties. | Acties zoals wijzigen, afbeelding kiezen, wachtwoord wijzigen, voorkeuren en toegankelijkheid kunnen zichtbaar zijn. | De vervolgacties horen bij aparte usecases of identity-providerflow. |
| 15 | Gebruiker | Profielpagina | Leest de informatie of navigeert verder. | Er vindt geen datamutatie plaats door alleen kijken. | Profiel bekijken is read-only. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | De gebruiker is niet ingelogd of de sessie is verlopen. | Het systeem start de generieke loginflow. | Geen profielpopup; generieke loginroute. | Geen. |
| ALT-002 | 2 | De gebruiker heeft geen toegang tot de normale applicatiecontext. | Het systeem toont generieke toegang-geweigerd-afhandeling of blokkeert de route. | Geen profielpopup. | Geen. |
| ALT-003 | 3 | De request bevat een gemanipuleerd gebruikers-ID. | Het systeem negeert dit en gebruikt de sessiegebruiker, of weigert het request wanneer manipulatie wordt gedetecteerd. | Generieke veilige foutmelding wanneer nodig. | Geen. |
| ALT-004 | 4 | Het interne gebruikersprofiel ontbreekt na succesvolle identity-providerlogin. | Het systeem volgt de bestaande provisioning- of foutafhandelingsflow. | Generieke account-/profielmelding wanneer nodig. | Geen profielmutatie binnen deze usecase. |
| ALT-005 | 6 | Er is geen avatar gekozen. | Het systeem toont initialen of een gelijkwaardige fallback. | Geen popup. | Geen. |
| ALT-006 | 6 | De opgeslagen avatarverwijzing bestaat niet meer of is niet actief. | Het systeem toont fallbackweergave; technische monitoring blijft beperkt tot veilige foutregistratie buiten de gebruikersweergave. | Geen gebruikersgerichte technische details. | Geen. |
| ALT-007 | 7 | Er zijn geen beschikbare niveaus voor de huidige context. | Het systeem toont geen willekeurige mockupwaarde. Het veld wordt leeg, read-only of met passende uitleg getoond. | Inline uitleg of verwijzing naar UC-GEN-PROF-003 wanneer niveau verplicht is. | Geen. |
| ALT-008 | 7 | Een verplicht niveau ontbreekt. | De profielpagina mag duidelijk maken dat een niveau nodig is, maar het afdwingen en opslaan hoort bij UC-GEN-PROF-003. | Verplichte-niveaucommunicatie hoort bij UC-GEN-PROF-003. | Geen. |
| ALT-009 | 8 | Accountstatusinformatie uit de identity provider is tijdelijk niet beschikbaar. | De profielpagina toont de overige profielgegevens en een veilige, beperkte statusmelding of neutrale fallback. | Geen technische details. | Geen. |
| ALT-010 | 9 | Relatie-informatie is voor de rolcontext niet relevant of niet toegestaan. | De sectie wordt verborgen of beperkt weergegeven. | Geen popup. | Geen. |
| ALT-011 | 12 | Profieldata bevat lege niet-verplichte velden. | Het systeem toont lege of passende waarden zonder voorbeelddata te gebruiken. | Geen popup. | Geen. |
| ALT-012 | 12-13 | Profielgegevens kunnen technisch niet geladen worden. | Het systeem toont een veilige fouttoestand en biedt herladen of terugnavigeren waar passend. | Generieke foutmelding, geen stacktrace of GUID. | Geen. |
| ALT-013 | 14 | De gebruiker kiest een muterende vervolgactie. | Het systeem start de passende vervolgusecase of identity-providerflow. | Afhankelijk van vervolgusecase. | Niet binnen deze usecase. |
| ALT-014 | 15 | De gebruiker sluit de pagina of navigeert weg. | Het systeem verlaat de profielpagina zonder wijzigingen. | Geen popup vanuit deze kijkflow. | Geen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-UC-GEN-PROF-001-001 | De profielpagina is alleen beschikbaar voor ingelogde gebruikers. |
| BR-UC-GEN-PROF-001-002 | Een gebruiker mag via de normale profielpagina uitsluitend het eigen profiel bekijken. |
| BR-UC-GEN-PROF-001-003 | De server bepaalt de doelgebruiker op basis van de sessie en niet op basis van clientinput. |
| BR-UC-GEN-PROF-001-004 | Profielwaarden in mockups zijn voorbeelddata en mogen niet hardcoded worden. |
| BR-UC-GEN-PROF-001-005 | Profiel, voorkeuren en toegankelijkheid zijn functioneel gescheiden onderdelen. |
| BR-UC-GEN-PROF-001-006 | OefenHub beheert het applicatieprofiel; authenticatie, wachtwoorden, sessies en credential lifecycle blijven bij de identity provider. |
| BR-UC-GEN-PROF-001-007 | Wachtwoorden, tokens, secrets, externe identity-provider-ID’s en gevoelige sessiedetails mogen niet op de profielpagina worden getoond. |
| BR-UC-GEN-PROF-001-008 | De huidige profielfoto wordt getoond via een vooraf gedefinieerde avatarreferentie of via een initialenfallback. |
| BR-UC-GEN-PROF-001-009 | Vrije upload van profielafbeeldingen is niet toegestaan binnen OefenHub. |
| BR-UC-GEN-PROF-001-010 | Actief niveau en beschikbare niveauopties worden afgeleid uit de toegestane context van de gebruiker. |
| BR-UC-GEN-PROF-001-011 | Een niveau dat niet toegankelijk is voor de gebruiker mag niet als beschikbare profielcontext worden getoond. |
| BR-UC-GEN-PROF-001-012 | Relatie-informatie op de profielpagina wordt alleen getoond wanneer de rolcontext dit toestaat. |
| BR-UC-GEN-PROF-001-013 | Een leerling mag op de profielpagina relevante gekoppelde ouder/voogd- of docentrelaties kunnen zien wanneer deze informatie voor de leerlingcontext is toegestaan. |
| BR-UC-GEN-PROF-001-014 | Alleen kijken veroorzaakt geen profiel-, instelling-, relatie- of accountmutatie. |
| BR-UC-GEN-PROF-001-015 | Foutmeldingen op de profielpagina mogen geen technische identifiers, stacktraces, ExternalId-waarden of databasefouten 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-003 | Profielafbeeldingen zijn vooraf gedefinieerde avatars of fallbackweergaven; vrije upload is niet toegestaan. |
BR-GEN-PROF-004 | Actieve niveaucontext moet worden afgeleid uit toegestane gebruikers- en rolcontext. |
BR-GEN-REL-001 | Relatiegegevens worden alleen getoond binnen de toegestane rol- en objectcontext. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Route naar profiel | Mag nooit als autorisatiebewijs worden gebruikt; server-side sessiecontrole blijft verplicht. |
| Sessie | Moet geldig zijn en aan een interne OefenHub-gebruiker gekoppeld kunnen worden. |
| Client-side gebruikers-ID | Mag niet bepalen welk profiel wordt geladen. |
Users.Id | Wordt afgeleid uit de server-side sessie. |
Users.ExternalId | Mag niet zichtbaar of bewerkbaar zijn op de profielpagina. |
| Voornaam | Wordt als profielwaarde getoond; rendering moet veilig geëncodeerd zijn. |
| Tussenvoegsel | Wordt als profielwaarde getoond; waarde # is systeemgereserveerd en hoort niet als normale gebruikerswaarde te ontstaan. |
| Achternaam | Wordt als profielwaarde getoond; rendering moet veilig geëncodeerd zijn. |
| E-mailadres | Wordt getoond als account-/profielreferentie; definitieve wijziging en verificatie vallen buiten deze kijkflow. |
ProfileAvatarId | Mag alleen verwijzen naar een bekende vooraf gedefinieerde avatar; ontbrekende of inactieve referentie leidt tot fallbackweergave. |
| Initialenweergave | Wordt afgeleid uit naamgegevens en veilig gerenderd. |
| Actief niveau | Mag alleen worden getoond wanneer de gebruiker die context functioneel mag gebruiken. |
| Niveau-opties | Worden afgeleid uit geautoriseerde niveaus; technische ID’s worden niet als gebruikersgerichte waarde getoond. |
| Accountbeveiligingsstatus | Alleen veilige read-only status tonen; geen wachtwoord, token, secret, sessiecookie of provider-ID. |
| Laatste aanmelding / laatst gezien | Datum- en tijdbron consistent verwerken; lokale weergave mag geen gevoelige sessiedetails lekken. |
| Relatiegegevens | Alleen tonen wanneer de relatie actief, relevant en voor de huidige gebruiker zichtbaar is. |
| Foutmeldingen | Gebruikersgericht formuleren; geen GUID’s, stacktraces, ExternalId, databasefouten of identity-providerdetails tonen. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 2 | Read / autorisatie | sessie, gebruikerscontext | Controleren of de gebruiker de profielpagina mag openen. |
| 3 | Read | Users | Doelgebruiker bepalen uit de sessie. |
| 4 | Read | Users | Profielgegevens van de ingelogde gebruiker lezen. |
| 5 | Read | UserSettings | Relevante profiel- en niveaucontextinstellingen lezen. |
| 6 | Read | ProfileAvatars | Avatarreferentie controleren en weergave bepalen. |
| 7 | Read | niveau- en autorisatiecontext | Toegestane niveaucontext bepalen. |
| 8 | Read | identity-providerstatus / accountstatusreadmodel | Veilige read-only accountstatus bepalen. |
| 9 | Read | relatie-readmodel | Relevante relatie-informatie bepalen. |
| 10-15 | UI-rendering | profielreadmodel | Profielpagina tonen zonder persistente profieldatamutatie. |
| ALT-012 | Event / logging | ProfileViewFailed | Technische laadfout veilig registreren zonder gebruikersgerichte technische details. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
Users | Profiel bekijken wijzigt geen gebruikersrecord. |
UserSettings | Profiel bekijken wijzigt geen instellingen of actieve niveaukeuze. |
ProfileAvatars | Avatars worden alleen gelezen; kiezen of verwijderen hoort bij UC-GEN-PROF-004. |
| Identity-provideraccount | Wachtwoord, sessie, e-mailverificatie en credential lifecycle worden niet gewijzigd. |
UserRelationships | Relaties worden alleen gelezen wanneer de rolcontext en objectautorisatie dit toestaan. |
RelationshipInvitations | Profiel bekijken accepteert, wijzigt of verstuurt geen relatie-uitnodiging. |
SystemMessages | Profiel bekijken maakt geen systeembericht aan. |
PrivateMessageThreads | Profiel bekijken maakt of wijzigt geen privéberichtthread. |
Tickets | Profiel bekijken maakt of wijzigt geen melding. |
ExerciseRuns | Profiel bekijken start, hervat of wijzigt geen oefenrun. |
| Toegankelijkheidscookie | Cookie-synchronisatie hoort bij de toegankelijkheidsusecases, niet bij profiel bekijken. |
| Accountlifecycle- of anonimiseringsrecords | Accountverwijdering en anonimiseren vallen buiten dit domein. |
13. State diagram
Niet van toepassing. Deze usecase wijzigt geen statusobject. De profielpagina leest profiel-, account- en contextdata, maar verandert geen profielstatus, uitnodigingsstatus, ticketstatus of oefenrunstatus.
14. Decision flow — profiel bekijken
15. Data lifecycle diagram — profiel bekijken
16. Sequence diagrammen
16.1 Profielpagina openen
16.2 Gemodificeerd gebruikers-ID in request
16.3 Profieldata niet beschikbaar
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Normale profielkijkflow. | Profiel bekijken gebruikt geen domeinspecifieke popup. Login, toegang weigeren en technische foutafhandeling verlopen via generieke applicatie-afhandeling. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijf de profielpagina als eigen gebruikerspagina waarop uitsluitend het eigen profiel zichtbaar is. |
| Functioneel Ontwerp | Leg de scheiding vast tussen Profiel, Voorkeuren en Toegankelijkheid. |
| Functioneel Ontwerp | Beschrijf dat profielwaarden dynamisch zijn en mockupwaarden niet hardcoded mogen worden. |
| Functioneel Ontwerp | Beschrijf dat accountbeveiligingsinformatie read-only is en dat wachtwoordbeheer via de identity provider verloopt. |
| Functioneel Ontwerp | Beschrijf dat profielavatarweergave bestaat uit vooraf gedefinieerde avatar of initialenfallback. |
| Functioneel Ontwerp | Beschrijf dat actieve niveaucontext wordt afgeleid uit toegestane niveaus en niet als vrije invoer wordt behandeld. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, Blazor frontend | Beschrijft het profielreadmodel uit op basis van Users, UserSettings, ProfileAvatars, identity-providerstatus en autorisatiecontext. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, Blazor frontend | Beschrijft dat de doelgebruiker server-side uit de sessie wordt bepaald en niet uit clientinput. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, Blazor frontend | Beschrijft veilige rendering van profielvelden en het niet tonen van technische identifiers of identity-providerkoppelsleutels. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, Blazor frontend | Beschrijft fallbackgedrag bij ontbrekende avatar, ontbrekende accountstatus of ontbrekende niet-kritieke contextdata. |
| Software Requirements Specification | Bevat requirements voor eigen-profieltoegang, dynamische data, read-only accountstatus, veilige foutmeldingen en geen datamutaties bij bekijken. |
| Database-informatie | Controleer dat Users, UserSettings en ProfileAvatars voldoende gegevens leveren voor de profielweergave en de avatarfallback. |
| Autorisatiematrix | Neem op dat iedere ingelogde gebruiker het eigen profiel mag bekijken, maar niet het profiel van andere gebruikers via deze route. |
| Domeinobjecten | Leg Users, UserSettings en ProfileAvatars vast als kernobjecten voor profielweergave. |
| Command-register | Voor deze usecase is geen muterend command nodig; hoogstens een readquery zoals GetOwnProfile. |
| Event-register | Leg eventuele niet-persistente of logginggerichte view-events zoals ProfileViewed alleen vast wanneer deze werkelijk nodig zijn. |
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-001-001 | SRS-RDM-001 SRS-ACC-003 AC-RDM-001 AC-ACC-003 | Een profielpagina beschikbaar stellen voor ingelogde gebruikers |
REQ-UC-GEN-PROF-001-002 | SRS-AUTH-001 SRS-ACC-003 AC-AUTH-001 AC-ACC-003 | Server-side afdwingen dat een gebruiker via de normale profielroute uitsluitend het eigen profiel kan bekijken |
REQ-UC-GEN-PROF-001-003 | SRS-AUTH-001 SRS-AUTH-002 SRS-ACC-003 AC-AUTH-001 AC-AUTH-002 AC-ACC-003 | Clientinput of routeparameters niet gebruiken als bron om een ander gebruikersprofiel te laden |
REQ-UC-GEN-PROF-001-004 | SRS-ACC-003 AC-ACC-003 | Profielgegevens dynamisch laden uit de actuele gebruikerscontext en mag mockupwaarden niet hardcoded gebruiken |
REQ-UC-GEN-PROF-001-005 | SRS-RDM-001 SRS-RDM-008 SRS-ACC-003 SRS-ACC-005 SRS-NFR-ACC-001 AC-RDM-001 AC-RDM-008 AC-ACC-003 AC-ACC-005 AC-NFR-ACC-001 | De profielpagina functioneel scheiden van voorkeuren en toegankelijkheidsinstellingen |
REQ-UC-GEN-PROF-001-006 | SRS-ACC-003 SRS-CAT-006 AC-ACC-003 AC-CAT-006 | Minimaal naamgegevens, e-mailadresreferentie, actuele profielweergave en actieve niveaucontext kunnen tonen wanneer deze beschikbaar zijn |
REQ-UC-GEN-PROF-001-007 | SRS-ACC-003 SRS-NFR-SEC-001 AC-ACC-003 AC-NFR-SEC-001 | Profielvelden veilig renderen zodat ingevoerde tekst niet als actieve HTML of script wordt uitgevoerd |
REQ-UC-GEN-PROF-001-008 | SRS-ACC-003 AC-ACC-003 | De huidige profielavatar tonen wanneer een geldige vooraf gedefinieerde avatar is gekozen |
REQ-UC-GEN-PROF-001-009 | SRS-ACC-003 AC-ACC-003 | Een initialenfallback of gelijkwaardige fallback tonen wanneer geen geldige avatar beschikbaar is |
REQ-UC-GEN-PROF-001-010 | SRS-RDM-001 SRS-ACC-003 AC-RDM-001 AC-ACC-003 | Via de profielpagina geen vrije upload van profielafbeeldingen aanbieden binnen deze kijkflow |
REQ-UC-GEN-PROF-001-011 | SRS-AUTH-001 SRS-RDM-001 SRS-RDM-005 SRS-ACC-003 SRS-CAT-006 AC-AUTH-001 AC-RDM-001 AC-RDM-005 AC-ACC-003 AC-CAT-006 | De beschikbare niveaucontext afleiden uit de toegestane niveaus en rolcontext van de gebruiker |
REQ-UC-GEN-PROF-001-012 | SRS-AUTH-001 SRS-ACC-003 SRS-CAT-001 AC-AUTH-001 AC-ACC-003 AC-CAT-001 | Geen niveau als beschikbare profielcontext tonen wanneer de gebruiker daarvoor geen geldige toegang heeft |
REQ-UC-GEN-PROF-001-013 | SRS-ACC-003 SRS-CAT-006 AC-ACC-003 AC-CAT-006 | Bij ontbrekende verplichte niveaucontext kunnen verwijzen naar de aparte flow voor verplicht niveau instellen |
REQ-UC-GEN-PROF-001-014 | SRS-ACC-002 SRS-ACC-003 SRS-NFR-SEC-001 AC-ACC-002 AC-ACC-003 AC-NFR-SEC-001 | Accountbeveiligingsinformatie uitsluitend als veilige read-only status tonen |
REQ-UC-GEN-PROF-001-016 | SRS-ACC-003 SRS-ADM-001 SRS-NFR-SEC-001 SRS-ARCH-002 AC-ACC-003 AC-ADM-001 AC-NFR-SEC-001 AC-ARCH-002 | E-mail- en wachtwoordbeheer functioneel scheiden van OefenHub-profielbeheer wanneer deze acties via de identity provider verlopen |
REQ-UC-GEN-PROF-001-017 | SRS-AUTH-001 SRS-RDM-001 SRS-RDM-005 SRS-RDM-007 SRS-ACC-003 SRS-REL-001 AC-AUTH-001 AC-RDM-001 AC-RDM-005 AC-RDM-007 AC-ACC-003 AC-REL-001 | Relatie-informatie op de profielpagina alleen tonen wanneer de rolcontext en objectautorisatie dit toestaan |
REQ-UC-GEN-PROF-001-018 | SRS-ACC-002 SRS-ACC-003 SRS-REL-001 AC-ACC-002 AC-ACC-003 AC-REL-001 | Voorkomen dat profiel bekijken Users, UserSettings, ProfileAvatars, relatiegegevens of identity-provideraccountgegevens wijzigt |
REQ-UC-GEN-PROF-001-019 | SRS-ACC-002 SRS-ACC-003 AC-ACC-002 AC-ACC-003 | Verlopen sessies afhandelen via de generieke loginflow |
REQ-UC-GEN-PROF-001-020 | SRS-AUTH-001 SRS-ACC-003 AC-AUTH-001 AC-ACC-003 | Ontbrekende autorisatie afhandelen via generieke toegang-geweigerd-afhandeling |
REQ-UC-GEN-PROF-001-021 | SRS-ACC-003 SRS-TIC-006 AC-ACC-003 AC-TIC-006 | Bij laadfouten een gebruikersgerichte foutmelding tonen zonder technische identifiers, stacktraces of interne databasenaamgeving |
REQ-UC-GEN-PROF-001-022 | SRS-ACC-003 SRS-TIC-002 SRS-NFR-SEC-001 AC-ACC-003 AC-TIC-002 AC-NFR-SEC-001 | Datum- en tijdwaarden, zoals laatste aanmelding of laatst gezien, consistent lokaal kunnen tonen op basis van een veilige bron |
REQ-UC-GEN-PROF-001-023 | SRS-AUTH-001 SRS-RDM-001 SRS-ACC-002 SRS-ACC-004 SRS-ACC-008 SRS-ACC-003 AC-AUTH-001 AC-RDM-001 AC-ACC-002 AC-ACC-004 AC-ACC-008 AC-ACC-003 | Gedeactiveerde, geanonimiseerde of afgeschermde accounts server-side afvangen zodat de profielpagina niet als normale profielweergave wordt gebruikt wanneer dat niet is toegestaan |
REQ-UC-GEN-PROF-001-024 | SRS-ACC-003 SRS-ACC-005 SRS-RDM-008 SRS-NFR-ACC-001 AC-ACC-003 AC-ACC-005 AC-RDM-008 AC-NFR-ACC-001 | De profielweergave kunnen laden zonder dat voorkeuren- of toegankelijkheidsmutaties worden uitgevoerd |