Skip to content

feat(api)!: remove deprecated password-based join in favor of role - #19

Open
antobinary wants to merge 1 commit into
v4.0.x-developfrom
remove-deprecated-join-password
Open

feat(api)!: remove deprecated password-based join in favor of role#19
antobinary wants to merge 1 commit into
v4.0.x-developfrom
remove-deprecated-join-password

Conversation

@antobinary

Copy link
Copy Markdown
Owner

Title: feat(api)!: remove deprecated password join parameter in favor of role

What & why

The /join password parameter derived a user's role by matching the meeting's moderatorPW/attendeePW. It was deprecated in BigBlueButton 3.0 (2025-02-05, docs commit 1c0457e6, shipped in v3.0.0-rc.3) in favor of the role parameter, which has existed since 2.4 (2021-10-27, commit 7ea48706) and is already what the HTML5 client sends. After ~17 months of public deprecation across the entire 3.0 line, this removes it for 4.0 and makes role the sole join mechanism.

Reference for reviewers: join.tsx already carried deprecated: true for password; the HTML5 client contains no password= on join.

Changes

  • bbb-web /join — role is resolved exclusively from the role parameter (MODERATOR/VIEWER); the password-matching branches are removed and a single "valid role required" error replaces the old password error paths. Removed the unused ApiParams.PASSWORD constant.
  • Breakout rooms — the internally generated breakout join URL now carries role= instead of password= (BreakoutApp2x.joinParams, BreakoutHdlrHelpers). The role value was already in scope, so no new plumbing. BreakoutRoomsUtilSpec base string + checksum updated accordingly.
  • Validation model — removed the dead JoinPassword / JoinPasswordConstraint / JoinPasswordValidator scaffold (the validator was a no-op return true) and the password field from the JoinMeeting request model. The shared @PasswordConstraint is kept — it's still used by create and end.
  • Tests — bbb-web ApiControllerSpec and the Playwright getJoinURL helper now join via role.
  • Docs — removed the join password parameter, updated the role description, and added a 4.0 "Removed" changelog entry in api.md.

Migration for API consumers

Replace password=<meeting password> on join URLs with role=MODERATOR or role=VIEWER (case-insensitive). The role parameter has been available since 2.4, so integrations can adopt it before upgrading to 4.0.

Before: /api/join?fullName=Alice&meetingID=abc&password=<moderatorPW>&checksum=…
After: /api/join?fullName=Alice&meetingID=abc&role=MODERATOR&checksum=…

Explicitly out of scope

  • The create-side attendeePW/moderatorPW parameters and their echo in create/getMeetingInfo/getMeetings responses are left untouched — removing them is a response-contract change best done in a separate PR.
  • The /end endpoint's password (moderator password) parameter is a distinct parameter and is not affected.

Breaking change

BREAKING CHANGE: the password parameter is no longer accepted on /join; callers must pass role. Deprecated since 3.0.

Testing

  • Updated unit/e2e coverage to join via role (bbb-web spec, Playwright helper, breakout util spec).
  • Please rely on CI for the full JVM/Scala compile — no local toolchain was available to the author.
  • Suggested manual check: create a meeting, join with role=MODERATOR and role=VIEWER, and verify breakout auto-join still assigns the correct role.

The `password` parameter on /join derived the user's role by matching the
meeting's moderator/attendee password. It was deprecated in BigBlueButton
3.0 (2025-02) in favor of the `role` parameter, which has existed since 2.4
(2021) and is what the HTML5 client already uses. This removes it entirely
and makes `role` the sole join mechanism.

- bbb-web /join: resolve the role exclusively from `role` (MODERATOR/VIEWER);
  remove the password-matching branches and the now-unused ApiParams.PASSWORD
- breakout rooms: build the internal join URL with `role=` instead of
  `password=` (BreakoutApp2x.joinParams / BreakoutHdlrHelpers)
- validation: drop the dead JoinPassword/JoinPasswordConstraint/
  JoinPasswordValidator scaffold and the `password` field on the JoinMeeting
  model (the shared @PasswordConstraint is kept for create/end)
- tests: join via `role` (bbb-web ApiControllerSpec, Playwright helpers,
  BreakoutRoomsUtilSpec)
- docs: remove the join `password` parameter, note the 4.0 removal, use `role`

Create-side `attendeePW`/`moderatorPW` and their response echo are left
untouched (separate, response-contract change) and can be removed in a
follow-up.

BREAKING CHANGE: the `password` parameter is no longer accepted on /join.
API consumers must pass `role=MODERATOR|VIEWER`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🚨 Automated tests failed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant