Let invited speakers bypass Events registration and join as panelists.
Deploy Ladill Meet / deploy (push) Successful in 1m30s

Verify speaker tokens from Events on join, grant panelist role for linked webinars, and point bulk comms links to the attendees page instead of the JSON preview API.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-03 15:48:35 +00:00
co-authored by Cursor
parent 08a1437b44
commit f5f599d1e3
5 changed files with 122 additions and 5 deletions
+45
View File
@@ -63,6 +63,13 @@ class EventsJoinGateTest extends TestCase
'badge_code' => 'BADGE123',
],
]),
'https://events.test/api/service/v1/events/*/verify-speaker' => Http::response([
'speaker' => [
'name' => 'Keynote Speaker',
'email' => 'speaker@example.com',
'role' => 'Keynote',
],
]),
]);
}
@@ -147,6 +154,44 @@ class EventsJoinGateTest extends TestCase
->assertDontSee('Register for event', false);
}
public function test_speaker_token_skips_registration_gate_and_grants_panelist_role(): void
{
$room = $this->createEventsLinkedRoom('webinar', [
'settings' => array_merge(config('meet.default_settings'), [
'join_before_host' => true,
'waiting_room' => false,
]),
]);
$session = Session::create([
'owner_ref' => $this->user->public_id,
'room_id' => $room->id,
'media_room_name' => 'room-'.$room->uuid,
'status' => 'live',
'started_at' => now(),
]);
$room->update(['status' => 'live']);
$this->get('/r/'.$room->uuid.'?speaker=speaker-token-123')
->assertRedirect(route('meet.join', $room));
$this->get('/r/'.$room->uuid)
->assertOk()
->assertSee('How should we show your name?', false)
->assertDontSee('Register for event', false);
$this->post('/r/'.$room->uuid.'/enter', [
'display_name' => 'Keynote Speaker',
])->assertRedirect(route('meet.room', $session));
$this->assertDatabaseHas('meet_participants', [
'session_id' => $session->id,
'display_name' => 'Keynote Speaker',
'email' => 'speaker@example.com',
'role' => 'panelist',
]);
}
/** @param array<string, mixed> $overrides */
protected function createEventsLinkedRoom(string $type, array $overrides = []): Room
{