Add speaker invitations with portal page and programme host picker.
Deploy Ladill Events / deploy (push) Successful in 47s

Speakers require email, get a personal holding page with programme and stage links, auto-invites when programme hosts are saved, and manual send for events without a schedule; also fix wallet copy on event create and anchor attendee comms.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-03 15:48:32 +00:00
co-authored by Cursor
parent 42d997a599
commit fec24da7bd
20 changed files with 1015 additions and 36 deletions
+4 -2
View File
@@ -47,8 +47,9 @@ Route::get('/q/{shortCode}/event-logo', [QrScanController::class, 'eventLogo'])-
Route::get('/q/{shortCode}/event-cover', [QrScanController::class, 'eventCover'])->name('qr.public.event.cover');
Route::get('/q/{shortCode}/itinerary-cover', [QrScanController::class, 'itineraryCover'])->name('qr.public.itinerary.cover');
Route::post('/q/{shortCode}/register', [EventRegistrationController::class, 'register'])->name('qr.public.event.register');
Route::get('/q/{shortCode}/register/callback', [EventRegistrationController::class, 'callback'])->name('qr.public.event.callback');
Route::get('/q/{shortCode}/registered/{ref}', [EventRegistrationController::class, 'confirmed'])->name('qr.public.event.confirmed');
Route::get('/q/{shortCode}/register/callback', [EventRegistrationController::class, 'callback'])->name('qr.public.event.callback');
Route::get('/q/{shortCode}/registered/{ref}', [EventRegistrationController::class, 'confirmed'])->name('qr.public.event.confirmed');
Route::get('/q/{shortCode}/speaker/{token}', [\App\Http\Controllers\Events\SpeakerPortalController::class, 'show'])->name('qr.public.speaker.portal');
});
Route::middleware(['auth', 'platform.session'])->group(function () {
@@ -95,6 +96,7 @@ Route::middleware(['auth', 'platform.session'])->group(function () {
Route::get('/speakers', [SpeakerController::class, 'hub'])->name('speakers.index');
Route::get('/events/{event}/speakers', [SpeakerController::class, 'index'])->name('speakers.show');
Route::put('/events/{event}/speakers', [SpeakerController::class, 'update'])->name('speakers.update');
Route::post('/events/{event}/speakers/invite', [SpeakerController::class, 'sendInvite'])->name('speakers.invite');
Route::get('/payouts', [PayoutsController::class, 'index'])->name('events.payouts');