Return Meet attendees to join flow after event registration.
Deploy Ladill Events / deploy (push) Successful in 47s

Add badge verification API, preserve meet_return through registration and payment, and link confirmation back to Meet with badge auto-login.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-03 14:36:42 +00:00
co-authored by Cursor
parent 9eab538f2e
commit 7cce194567
9 changed files with 197 additions and 8 deletions
@@ -13,6 +13,12 @@
}
}
}
$meetContinueUrl = '';
if (! empty($meetReturn ?? '')) {
$meetContinueUrl = $meetReturn . (str_contains($meetReturn, '?') ? '&' : '?') . 'badge=' . urlencode($registration->badge_code);
} elseif ($joinUrl !== '') {
$meetContinueUrl = $joinUrl . (str_contains($joinUrl, '?') ? '&' : '?') . 'badge=' . urlencode($registration->badge_code);
}
@endphp
<!DOCTYPE html>
<html lang="en">
@@ -81,11 +87,11 @@
<p class="mt-5 text-xs text-slate-400">Show this badge code at check-in.</p>
@endif
@if($joinUrl !== '')
<a href="{{ $joinUrl }}"
@if($meetContinueUrl !== '')
<a href="{{ $meetContinueUrl }}"
class="mt-6 inline-flex w-full items-center justify-center rounded-xl px-4 py-3 text-sm font-bold text-white shadow-sm transition hover:opacity-90"
style="background:{{ $evColor }}">
Join webinar
Continue to session
</a>
@endif
@endif
+3 -1
View File
@@ -640,6 +640,7 @@
$evHeading = $evMode === 'contributions' ? 'Make a contribution' : 'Register';
$evRegRoute = $qrCode->publicPath('register');
$evCsrf = csrf_token();
$evMeetReturn = trim((string) ($meetReturn ?? ''));
@endphp
<div x-data="{
mode: @js($evMode),
@@ -648,6 +649,7 @@
amount: '',
name: '', email: '', phone: '',
fields: {},
meetReturn: @js($evMeetReturn),
loading: false, errorMsg: '',
showSheet: false, checkoutUrl: '',
selectTier(n, p) { this.tier = n; this.tierPrice = p; },
@@ -663,7 +665,7 @@
const res = await fetch(@js($evRegRoute), {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-CSRF-TOKEN': @js($evCsrf) },
body: JSON.stringify({ tier: this.tier, amount: this.mode === 'contributions' ? this.amount : null, attendee_name: this.name, attendee_email: this.email, attendee_phone: this.phone, badge_fields: this.fields }),
body: JSON.stringify({ tier: this.tier, amount: this.mode === 'contributions' ? this.amount : null, attendee_name: this.name, attendee_email: this.email, attendee_phone: this.phone, badge_fields: this.fields, meet_return: this.meetReturn || null }),
});
const data = await res.json().catch(() => ({}));
if (!res.ok) {