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)); } }