Files
ladill-meet/app/Support/EventsRegistrationSession.php
T
isaaccladandCursor f5f599d1e3
Deploy Ladill Meet / deploy (push) Successful in 1m30s
Let invited speakers bypass Events registration and join as panelists.
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>
2026-07-03 15:48:35 +00:00

58 lines
1.8 KiB
PHP

<?php
namespace App\Support;
use App\Models\Room;
use Illuminate\Http\Request;
class EventsRegistrationSession
{
private static function key(Room $room): string
{
return "meet.events.registration.{$room->uuid}";
}
/** @return array{email: ?string, name: ?string, badge_code: ?string, speaker_token: ?string}|null */
public static function get(Request $request, Room $room): ?array
{
$data = $request->session()->get(self::key($room));
return is_array($data) ? $data : null;
}
public static function isVerified(Request $request, Room $room): bool
{
$data = self::get($request, $room);
return filled($data['badge_code'] ?? null) && filled($data['email'] ?? null);
}
public static function isSpeakerVerified(Request $request, Room $room): bool
{
$data = self::get($request, $room);
return filled($data['speaker_token'] ?? null) && filled($data['email'] ?? null);
}
public static function canJoinEventsLinked(Request $request, Room $room): bool
{
return self::isVerified($request, $room) || self::isSpeakerVerified($request, $room);
}
/** @param array{email?: ?string, name?: ?string, badge_code?: ?string, speaker_token?: ?string} $data */
public static function store(Request $request, Room $room, array $data): void
{
$request->session()->put(self::key($room), [
'email' => $data['email'] ?? null,
'name' => $data['name'] ?? null,
'badge_code' => $data['badge_code'] ?? null,
'speaker_token' => $data['speaker_token'] ?? null,
]);
}
public static function forget(Request $request, Room $room): void
{
$request->session()->forget(self::key($room));
}
}