Describe the bug
Hi there,
This is Fred Dixon, the product manager for BigBlueButton. We've had a few reports of Canvas customers hitting this bug.
I've done some digging (with the help of Fable) will submit a PR for review.
Summary
When a conference is created with "Invite all course members" in a course whose start date is in the future (with "Users can only participate in the course between these dates" enabled), no students are ever invited.
The initial invite silently adds no students, and when the course start date passes, students are still not added. Students who enroll before the start date are also never synced, despite the automatic enrollment sync for invite-all conferences.
As a result, the instructor must edit the conference after the course begins and re-select "Invite all course members" before students are added.
Additional notes
Removing the course start date makes everything work, which points to the root cause:
WebConference#invite_users_from_context filters invitees through Course#participating_users, which uses the enrollments.active_by_date scope. Before the course start date, students' enrollment_states.state is pending_active, so they are filtered out when the conference is created.
- The only automatic path that adds users later is
Enrollment.after_commit :sync_to_invite_all_conferences, which runs on workflow_state transitions to active. When a course start date passes, only enrollment_states changes (date-based); enrollments.workflow_state does not, so this callback never runs. For students enrolled before the course starts, the callback already ran at enrollment time, but the invite was filtered out by the same date-based scope.
Possible fix (would like a review of this)
Use the active_or_pending_by_date scope when building conference invitees so that date-pending enrollments are invited. The existing :join permission already prevents users from accessing the conference before the course becomes readable.
Screenshots or screen recordings
No response
Steps to reproduce
- As a teacher, create a course with a start date in the future and enable "Users can only participate in the course between these dates".
- Enroll one or more students and publish the course.
- Create a conference and check "Invite all course members".
- Observe that the conference has no student invitees.
- Enroll an additional student before the course start date.
- Observe that the newly enrolled student is not added either.
- Wait for (or move) the course start date to pass.
- Observe that students are still not invitees and cannot join the conference.
Expected behavior
Students enrolled in the course should be invited to the conference regardless of whether the course start date has passed, or at minimum should be added automatically once the course becomes active.
Access control is unaffected either way, since joining a conference already requires read permission on the course.
What browsers are you seeing the problem on (if applicable)?
No response
Backtrace
Relevant log output
Describe the bug
Hi there,
This is Fred Dixon, the product manager for BigBlueButton. We've had a few reports of Canvas customers hitting this bug.
I've done some digging (with the help of Fable) will submit a PR for review.
Summary
When a conference is created with "Invite all course members" in a course whose start date is in the future (with "Users can only participate in the course between these dates" enabled), no students are ever invited.
The initial invite silently adds no students, and when the course start date passes, students are still not added. Students who enroll before the start date are also never synced, despite the automatic enrollment sync for invite-all conferences.
As a result, the instructor must edit the conference after the course begins and re-select "Invite all course members" before students are added.
Additional notes
Removing the course start date makes everything work, which points to the root cause:
WebConference#invite_users_from_contextfilters invitees throughCourse#participating_users, which uses theenrollments.active_by_datescope. Before the course start date, students'enrollment_states.stateispending_active, so they are filtered out when the conference is created.Enrollment.after_commit :sync_to_invite_all_conferences, which runs onworkflow_statetransitions toactive. When a course start date passes, onlyenrollment_stateschanges (date-based);enrollments.workflow_statedoes not, so this callback never runs. For students enrolled before the course starts, the callback already ran at enrollment time, but the invite was filtered out by the same date-based scope.Possible fix (would like a review of this)
Use the
active_or_pending_by_datescope when building conference invitees so that date-pending enrollments are invited. The existing:joinpermission already prevents users from accessing the conference before the course becomes readable.Screenshots or screen recordings
No response
Steps to reproduce
Expected behavior
Students enrolled in the course should be invited to the conference regardless of whether the course start date has passed, or at minimum should be added automatically once the course becomes active.
Access control is unaffected either way, since joining a conference already requires read permission on the course.
What browsers are you seeing the problem on (if applicable)?
No response
Backtrace
Relevant log output