Guest Access Mode
Part of Epic #12
Summary
Every meeting is currently open to guests, with no way for organizers to restrict it. A new Guest Access Mode will let organizers enable or disable guest access per meeting.
The existing protection options stay available. Guest Access Mode can be combined with Password protection and Waiting room, which will apply either to all participants or to guests only.
Requirement
- Organizers must be able to disable the Guest Mode when planning a Meeting (opt-out) and be able to change this setting during the meeting
- Waiting room is opt-in (Off (default), Guests only, Everyone)
- The same changes should be implemented in the Outlook Addin
- Admins must be able to fully disable the Guest Mode and the Dashboard UI must reflect this
The following flow should be implemented for Invited Users, Guest Users and Dial-in users:
UX Specifications
The current OpenTalk UI design should be retained. The click dummy is intended to demonstrate the functionality and structure of the form.
Dashboard / Meeting creation
UX design (not UI Design) with different states.
Default: Guest access enabled.
Position
see #256 (closed)
Wording
"Guest access"
"Waiting room" with status "Off", "Guests only", "Everyone"
In-Meeting Moderator Controls
Mockup - not UI design!
The moderator menu currently contains "Invite guest" and "Disable waiting room".
Guest access
A context-sensitive toggle is added:
- Guests off → "Enable guest access"
- Guests on → "Disable guest access"
The person icon without plus (from "Invite guest") is used for this toggle.
The setting is persisted for the meeting.
When "Disable guest access" is triggered while guests are present, a confirmation dialog opens:
- DE: „Gastzugang sperren?" / „Alle aktuell anwesenden Gäste werden sofort aus dem Meeting entfernt und können nicht mehr beitreten." / [Abbrechen] [Gastzugang sperren]
- EN: "Disable guest access?" / "All guests currently in the meeting will be removed immediately and won't be able to rejoin." / [Cancel] [Disable guest access]
Snackbars for the moderator:
- "Guest access enabled"
- "Guest access disabled" (only fires after confirmation, not on cancel)
Invite guest
Remains visible but is disabled when guest access is off, with tooltip "Enable guest access first".
Manage waiting room
A fixed entry that opens a submenu on click. The submenu shows the current selection with a checkmark and closes on selection, outside click, or Escape without changing the current selection. Options depend on guest access state:
- Guests on: Off / Guests only / All participants
- Guests off: Off / Guests only (disabled, tooltip "Enable guest access first") / All participants
The current waiting room icon is identical with the timer icon, which is confusing. Recommendation is a door icon (see https://mui.com/material-ui/material-icons/?query=door+room), open and crossed out.
State model
| State | Change | Behavior | Snackbar (moderator only) |
|---|---|---|---|
| Guests off, WR off | → Guests on | Silent, WR stays off | "Guest access enabled" |
| Guests off, WR on | → Guests on | Silent, WR stays on | "Guest access enabled" |
| Guests on, WR off | → Guests off | Confirmation dialog, on confirm: WR stays off | "Guest access disabled" |
| Guests on, WR guests only | → Guests off | Confirmation dialog, on confirm: WR becomes off | "Guest access disabled" |
| Guests on, WR on | → Guests off | Confirmation dialog, on confirm: WR stays on | "Guest access disabled" |
| WR off (guests off) | → WR on | Submenu opens, preselection: off; "Guests only" disabled | "Waiting room enabled for all participants" |
| WR off (guests on) | → WR on | Submenu opens, preselection: off | "Waiting room enabled for guests only" or "Waiting room enabled for all participants" |
| WR guests only or all | → WR off | Submenu opens, preselection: current | "Waiting room turned off" |
| WR guests only | → WR all | Submenu opens, preselection: current | "Waiting room enabled for all participants" |
| WR all | → WR guests only | Submenu opens, preselection: current | "Waiting room enabled for guests only" |
Acceptance Criteria
Dashboard / Meeting creation
- Admins must be able to fully disable guest mode; the dashboard UI must reflect this (
✅ already implemented) - Organizers must be able to disable guest mode when planning a meeting (opt-out)
- Organizers can choose between 2 guest access modes: Direct access (default), Waiting room
- Dial-in users are treated as guests (
✅ already implemented) - Registered and invited users are treated as invited, even if they join through an invite link → opentalk/backend/services/controller#1319 (closed)
- Registered users who are not invited are treated as guests (
✅ already implemented) - E2E encryption automatically disables guest access and locks the toggle. When E2E is turned off again, guest access returns to its previous state
In-meeting moderator controls
- Moderator can enable/disable guest access during a meeting
- Guest access setting is persisted for the meeting
- "Invite guest" is visible but disabled when guest access is off, with tooltip "Enable guest access first"
- Disabling guest access while guests are present requires confirmation (copy DE/EN see above)
- Snackbar "Guest access disabled" only fires after confirmation, not on cancel
- Moderator can change waiting room scope via "Manage waiting room" submenu
- Waiting room scope options depend on guest access state (see state model)
- "Guests only" option is visible but disabled when guest access is off, with tooltip "Enable guest access first"
- Waiting room submenu closes on outside click and Escape without changing current selection



