From 7a1bc86b9eee58c00a9b2456c7d11852f9ed55ad Mon Sep 17 00:00:00 2001 From: isaacclad Date: Sat, 27 Jun 2026 15:46:33 +0000 Subject: [PATCH] Use ladl.link URLs for all front-facing QR and short-link surfaces. Public landing pages, asset paths, payment callbacks, and redirects now go through QrCode::publicPath() / LadillLink instead of ladill.com/q/* routes. Co-authored-by: Cursor --- .../Controllers/Public/QrScanController.php | 6 +-- .../Public/TransferPublicController.php | 2 +- .../views/public/qr/document-viewer.blade.php | 2 +- resources/views/public/qr/landing.blade.php | 40 +++++++++---------- .../views/public/transfer/landing.blade.php | 2 +- .../views/public/transfer/password.blade.php | 2 +- resources/views/qr-codes/badges.blade.php | 2 +- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/app/Http/Controllers/Public/QrScanController.php b/app/Http/Controllers/Public/QrScanController.php index da63743..0e08fd8 100644 --- a/app/Http/Controllers/Public/QrScanController.php +++ b/app/Http/Controllers/Public/QrScanController.php @@ -36,7 +36,7 @@ class QrScanController extends Controller } if ($qrCode->isDocumentType()) { - return redirect()->route('qr.public.view', $shortCode); + return redirect()->away($qrCode->publicPath('view')); } if ($qrCode->isBookType()) { @@ -44,7 +44,7 @@ class QrScanController extends Controller } if ($qrCode->isTransferType()) { - return redirect()->route('qr.public.transfer', $shortCode); + return redirect()->away($qrCode->publicPath('transfer')); } if ($qrCode->isPaymentType()) { @@ -70,7 +70,7 @@ class QrScanController extends Controller return view('public.qr.document-viewer', [ 'qrCode' => $qrCode, - 'fileUrl' => route('qr.public.file', $shortCode), + 'fileUrl' => $qrCode->publicPath('file'), 'allowDownload' => (bool) ($qrCode->content()['allow_download'] ?? true), ]); } diff --git a/app/Http/Controllers/Public/TransferPublicController.php b/app/Http/Controllers/Public/TransferPublicController.php index 1e99dd0..247c7b3 100644 --- a/app/Http/Controllers/Public/TransferPublicController.php +++ b/app/Http/Controllers/Public/TransferPublicController.php @@ -60,7 +60,7 @@ class TransferPublicController extends Controller $request->session()->put("transfer_unlocked.{$transfer->id}", true); - return redirect()->route('qr.public.transfer', $shortCode); + return redirect()->away($qrCode->publicPath('transfer')); } public function download(Request $request, string $shortCode, TransferFile $file): StreamedResponse diff --git a/resources/views/public/qr/document-viewer.blade.php b/resources/views/public/qr/document-viewer.blade.php index b5f1845..3b66e75 100644 --- a/resources/views/public/qr/document-viewer.blade.php +++ b/resources/views/public/qr/document-viewer.blade.php @@ -111,7 +111,7 @@ - @@ -32,7 +32,7 @@ View document - @@ -62,7 +62,7 @@ {{-- ===== VCARD ===== --}} @elseif($type === \App\Models\QrCode::TYPE_VCARD) @php - $avatarUrl = !empty($content['avatar_path']) ? route('qr.public.vcard.avatar', $qrCode->short_code) : null; + $avatarUrl = !empty($content['avatar_path']) ? $qrCode->publicPath('avatar') : null; $rawSocial = $content['social'] ?? []; $social = []; foreach ($rawSocial as $platform => $url) { @@ -159,7 +159,7 @@ {{-- Save contact button --}}
- Save Contact @@ -178,8 +178,8 @@ $bizColor = $content['brand_color'] ?? '#1e3a5f'; $bizHasLogo = !empty($content['logo_path']); $bizHasCover = !empty($content['cover_path']); - $bizLogoUrl = $bizHasLogo ? route('qr.public.business.logo', $qrCode->short_code) : null; - $bizCoverUrl = $bizHasCover ? route('qr.public.business.cover', $qrCode->short_code) : null; + $bizLogoUrl = $bizHasLogo ? $qrCode->publicPath('business-logo') : null; + $bizCoverUrl = $bizHasCover ? $qrCode->publicPath('business-cover') : null; $bizInitials = strtoupper(substr($bizName, 0, 1)); $bizRawSocial = $content['social'] ?? []; $bizSocial = []; @@ -313,8 +313,8 @@ $churchColor = $content['brand_color'] ?? '#1a3a5c'; $churchHasLogo = !empty($content['logo_path']); $churchHasCover = !empty($content['cover_path']); - $churchLogoUrl = $churchHasLogo ? route('qr.public.church.logo', $qrCode->short_code) : null; - $churchCoverUrl = $churchHasCover ? route('qr.public.church.cover', $qrCode->short_code) : null; + $churchLogoUrl = $churchHasLogo ? $qrCode->publicPath('church-logo') : null; + $churchCoverUrl = $churchHasCover ? $qrCode->publicPath('church-cover') : null; $churchInitials = strtoupper(substr($churchName, 0, 2)); $churchAcceptsPay = !empty($content['accepts_payment']); $churchCurrency = $content['currency'] ?? 'GHS'; @@ -325,7 +325,7 @@ $churchTypes, array_map(fn($t) => $legacyLabels[strtolower(trim($t))] ?? trim($t), $churchTypes) ); - $churchOrderRoute = route('qr.public.order', $qrCode->short_code); + $churchOrderRoute = $qrCode->publicPath('order'); $churchCsrf = csrf_token(); @endphp
short_code) : null; + $itinCoverUrl = $itinHasCover ? $qrCode->publicPath('itinerary-cover') : null; $itinTitle = $content['title'] ?? $qrCode->label; $itinDays = $content['days'] ?? []; $multiDay = count($itinDays) > 1; @@ -1029,7 +1029,7 @@

{{ $qrCode->label }}

@foreach($content['images'] ?? [] as $index => $image) - {{ $image['title'] ?? 'Image ' . ($index + 1) }} @@ -1039,7 +1039,7 @@ {{-- ===== APP ===== --}} @elseif($type === \App\Models\QrCode::TYPE_APP) -@php $appIconUrl = !empty($content['icon_path']) ? route('qr.public.app.icon', $qrCode->short_code) : null; @endphp +@php $appIconUrl = !empty($content['icon_path']) ? $qrCode->publicPath('app-icon') : null; @endphp
@endforeach
diff --git a/resources/views/public/transfer/password.blade.php b/resources/views/public/transfer/password.blade.php index 0dc5a8e..d3824a5 100644 --- a/resources/views/public/transfer/password.blade.php +++ b/resources/views/public/transfer/password.blade.php @@ -17,7 +17,7 @@

{{ session('error') }}

@endif -
+ @csrf
diff --git a/resources/views/qr-codes/badges.blade.php b/resources/views/qr-codes/badges.blade.php index b951707..bc18a42 100644 --- a/resources/views/qr-codes/badges.blade.php +++ b/resources/views/qr-codes/badges.blade.php @@ -3,7 +3,7 @@ $evColor = $c['brand_color'] ?? '#4f46e5'; $evName = $c['name'] ?? $qrCode->label; $hasLogo = !empty($c['logo_path']); - $logoUrl = $hasLogo ? route('qr.public.event.logo', $qrCode->short_code) : null; + $logoUrl = $hasLogo ? $qrCode->publicPath('event-logo') : null; $size = $c['badge_size'] ?? '4x3'; // Physical badge dimensions (inches) [$bw, $bh] = match ($size) {