fix: QR code guna Storage::disk('public') — imej tidak papar di admin panel

Storage::put() guna default disk (local/private) menyebabkan fail disimpan
di storage/app/private/public/qrcodes/ tapi URL /storage/qrcodes/... cari
fail di storage/app/public/qrcodes/ melalui symlink — lokasi berbeza.

- QrCodeService: guna disk('public'), path ringkas 'qrcodes/{token}.png'
- View: Storage::disk('public')->url() untuk URL yang betul

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Saufi
2026-05-18 20:37:42 +08:00
parent 55c077ee48
commit 756b73e3ee
2 changed files with 8 additions and 12 deletions

View File

@@ -12,25 +12,21 @@ class QrCodeService
{
public function generateForProgram(Program $program): ProgramQrCode
{
// Deactivate existing active QR codes
$program->qrCodes()->where('is_active', true)->update(['is_active' => false]);
$token = Str::random(48);
$url = route('public.checkin.show', $token);
$path = 'public/qrcodes/' . $token . '.png';
$absPath = Storage::path($path);
$token = Str::random(48);
$url = route('public.checkin.show', $token);
$path = 'qrcodes/' . $token . '.png';
// Ensure directory exists
Storage::makeDirectory('public/qrcodes');
Storage::disk('public')->makeDirectory('qrcodes');
// Generate QR code PNG (400×400, with quiet zone)
$png = QrCode::format('png')
->size(400)
->margin(2)
->errorCorrection('H')
->generate($url);
Storage::put($path, $png);
Storage::disk('public')->put($path, $png);
return $program->qrCodes()->create([
'token' => $token,
@@ -41,11 +37,11 @@ class QrCodeService
public function getPublicUrl(ProgramQrCode $qrCode): string
{
return Storage::url($qrCode->qr_image_path);
return Storage::disk('public')->url($qrCode->qr_image_path);
}
public function getRawPng(ProgramQrCode $qrCode): string
{
return Storage::get($qrCode->qr_image_path);
return Storage::disk('public')->get($qrCode->qr_image_path);
}
}

View File

@@ -22,7 +22,7 @@
@if($qrCode)
{{-- QR Code Image --}}
<div class="mb-4">
<img src="{{ Storage::url($qrCode->qr_image_path) }}"
<img src="{{ Storage::disk('public')->url($qrCode->qr_image_path) }}"
alt="QR Code {{ $program->title }}"
class="img-fluid border rounded p-2"
style="max-width: 280px;">