
and this is the script for it:
@startuml
actor User
participant App
participant Server
participant Store
User -> App: Login
App -> Server: Request Role
alt Role == VervangIdentiteit
Server -> App: Show Switch User Button
User -> App: Request user switch
App -> Server: Make data API call with student UPN
Server --> App: Return The Response
alt Response Status is Success
App -> Store: Move User Data to Impersonator Store
App -> Server: Deregister From Push Notifications
App -> Store: Clear User Store
Store -> Server: Add Student UPN As Header to Network Calls From Impersonator Store
Server --> App: Redirect to Home Page
App -> Server: Fetch Impersonated Student Data
else Response Error is Error
alt Response is Unauthorized
Server -> App: Show You Do Not Have The Right Message
else Response is Other Error
Server -> App: Show Generic Error Message
end
else Role == Student
Server -> App: Show Regular User Interface
end
User -> App: Clicks Revert to Myself Button
App -> Store: Move Impersonator Store to User Store
App -> Store: Clear Impersonator Store
Store -> Server: Remove Student UPN From The Headers
App -> Server: Register for Push Notifications
Server --> App: Redirect to Home Page
App -> Server: Fetch User Data
@enduml