┌─┐ ║"│ └┬┘ ┌┼┐ │ ┌───┐ ┌──────┐ ┌─────┐ ┌┴┐ │App│ │Server│ │Store│ User └─┬─┘ └──┬───┘ └──┬──┘ │ Login │ │ │ │ ──────────────────────────────> │ │ │ │ │ │ │ │ Request Role │ │ │ │ ──────────────────────────────────────> │ │ │ │ │ │ │ │ │ ╔══════╤════╪═══════════════════════════════╪═══════════════════════════════════════╪═══════════════════════════════════════════════════════════════════╪══════════════════════╗ ║ ALT │ Role == VervangIdentiteit │ │ │ ║ ╟──────┘ │ │ │ │ ║ ║ │ │ Show Switch User Button │ │ ║ ║ │ │ <────────────────────────────────────── │ ║ ║ │ │ │ │ ║ ║ │ Request user switch │ │ │ ║ ║ │ ──────────────────────────────> │ │ ║ ║ │ │ │ │ ║ ║ │ │ Make data API call with student UPN │ │ ║ ║ │ │ ──────────────────────────────────────> │ ║ ║ │ │ │ │ ║ ║ │ │ Return The Response │ │ ║ ║ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ║ ║ │ │ │ │ ║ ║ │ │ │ │ ║ ║ │ ╔══════╤════╪═══════════════════════════════════════╪═══════════════════════════════════════════════════════════════════╪════════════╗ ║ ║ │ ║ ALT │ Response Status is Success │ │ ║ ║ ║ │ ╟──────┘ │ │ │ ║ ║ ║ │ ║ │ Move User Data to Impersonator Store │ ║ ║ ║ │ ║ │ ──────────────────────────────────────────────────────────────────────────────────────────────────────────> ║ ║ ║ │ ║ │ │ │ ║ ║ ║ │ ║ │ Deregister From Push Notifications │ │ ║ ║ ║ │ ║ │ ──────────────────────────────────────> │ ║ ║ ║ │ ║ │ │ │ ║ ║ ║ │ ║ │ │ Clear User Store │ ║ ║ ║ │ ║ │ ──────────────────────────────────────────────────────────────────────────────────────────────────────────> ║ ║ ║ │ ║ │ │ │ ║ ║ ║ │ ║ │ │ Add Student UPN As Header to Network Calls From Impersonator Store│ ║ ║ ║ │ ║ │ │ <────────────────────────────────────────────────────────────────── ║ ║ ║ │ ║ │ │ │ ║ ║ ║ │ ║ │ Redirect to Home Page │ │ ║ ║ ║ │ ║ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ ║ ║ ║ │ ║ │ │ │ ║ ║ ║ │ ║ │ Fetch Impersonated Student Data │ │ ║ ║ ║ │ ║ │ ──────────────────────────────────────> │ ║ ║ ║ │ ╠═══════════╪═══════════════════════════════════════╪═══════════════════════════════════════════════════════════════════╪════════════╣ ║ ║ │ ╚═[Response Error is Error]═════════════════════════╪═══════════════════════════════════════════════════════════════════╪════════════╝ ║ ║ │ │ │ │ ║ ║ │ │ │ │ ║ ║ │ ╔══════╤════╪═══════════════════════════════════════╪════════════╗ │ ║ ║ │ ║ ALT │ Response is Unauthorized │ ║ │ ║ ║ │ ╟──────┘ │ │ ║ │ ║ ║ │ ║ │ Show You Do Not Have The Right Message│ ║ │ ║ ║ │ ║ │ <────────────────────────────────────── ║ │ ║ ║ │ ╠═══════════╪═══════════════════════════════════════╪════════════╣ │ ║ ║ │ ║ [Response is Other Error] │ ║ │ ║ ║ │ ║ │ Show Generic Error Message │ ║ │ ║ ║ │ ║ │ <────────────────────────────────────── ║ │ ║ ║ │ ╚═══════════╪═══════════════════════════════════════╪════════════╝ │ ║ ╠═══════════╪═══════════════════════════════╪═══════════════════════════════════════╪═══════════════════════════════════════════════════════════════════╪══════════════════════╣ ║ [Role == Student] │ │ │ ║ ║ │ │ Show Regular User Interface │ │ ║ ║ │ │ <────────────────────────────────────── │ ║ ╚═══════════╪═══════════════════════════════╪═══════════════════════════════════════╪═══════════════════════════════════════════════════════════════════╪══════════════════════╝ │ │ │ │ │ Clicks Revert to Myself Button│ │ │ │ ──────────────────────────────> │ │ │ │ │ │ │ │ Move Impersonator Store to User Store │ │ │ ──────────────────────────────────────────────────────────────────────────────────────────────────────────> │ │ │ │ │ │ │ Clear Impersonator Store │ │ │ ──────────────────────────────────────────────────────────────────────────────────────────────────────────> │ │ │ │ │ │ │ Remove Student UPN From The Headers │ │ │ │ <────────────────────────────────────────────────────────────────── │ │ │ │ │ │ Register for Push Notifications │ │ │ │ ──────────────────────────────────────> │ │ │ │ │ │ │ Redirect to Home Page │ │ │ │ <─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ Fetch User Data │ │ │ │ ──────────────────────────────────────> │ User ┌─┴─┐ ┌──┴───┐ ┌──┴──┐ ┌─┐ │App│ │Server│ │Store│ ║"│ └───┘ └──────┘ └─────┘ └┬┘ ┌┼┐ │ ┌┴┐