Add kiosk join/leave pages, waiting room, and meeting feedback.
Deploy Ladill Meet / deploy (push) Successful in 47s

Redesign public join flows on the Frontdesk kiosk template, enforce host
admission when waiting room is enabled, and collect star ratings after leave.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-01 13:33:48 +00:00
co-authored by Cursor
parent 5e34d71de0
commit 7ae26a467c
26 changed files with 865 additions and 124 deletions
+55
View File
@@ -131,6 +131,7 @@ class MeetWebTest extends TestCase
$room = $this->createRoom([
'settings' => array_merge(config('meet.default_settings'), [
'join_before_host' => true,
'waiting_room' => false,
]),
]);
$session = Session::create([
@@ -157,6 +158,7 @@ class MeetWebTest extends TestCase
$room = $this->createRoom([
'settings' => array_merge(config('meet.default_settings'), [
'join_before_host' => true,
'waiting_room' => false,
]),
]);
$session = Session::create([
@@ -196,6 +198,59 @@ class MeetWebTest extends TestCase
$this->assertNotSame($hostParticipant->uuid, $guest->uuid);
}
public function test_guest_is_placed_in_waiting_room_when_enabled(): void
{
$room = $this->createRoom([
'settings' => array_merge(config('meet.default_settings'), [
'join_before_host' => true,
'waiting_room' => true,
]),
]);
$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->post('/r/'.$room->uuid.'/enter', [
'display_name' => 'Waiting Guest',
])
->assertRedirect(route('meet.join.waiting', $room));
$this->assertDatabaseHas('meet_participants', [
'session_id' => $session->id,
'display_name' => 'Waiting Guest',
'status' => 'waiting',
]);
}
public function test_leave_redirects_to_feedback_page(): void
{
$room = $this->createRoom(['settings' => array_merge(config('meet.default_settings'), ['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(),
]);
$participant = \App\Models\Participant::create([
'owner_ref' => $this->user->public_id,
'session_id' => $session->id,
'display_name' => 'Guest',
'role' => 'guest',
'status' => 'joined',
'joined_at' => now(),
]);
$this->withSession(["meet.participant.{$session->uuid}" => $participant->uuid])
->post('/room/'.$session->uuid.'/leave')
->assertRedirect(route('meet.left', $session));
}
public function test_authenticated_user_can_join_live_meeting_without_display_name(): void
{
$room = $this->createRoom();