diff --git a/app/Http/Controllers/Qr/QrCodeController.php b/app/Http/Controllers/Qr/QrCodeController.php index 706a3f3..ecdcdac 100644 --- a/app/Http/Controllers/Qr/QrCodeController.php +++ b/app/Http/Controllers/Qr/QrCodeController.php @@ -279,6 +279,20 @@ class QrCodeController extends Controller return back()->with('success', 'QR code updated.'); } + public function destroy(Request $request, QrCode $qrCode): RedirectResponse + { + $this->authorize('delete', $qrCode); + + // Remove the code and its scan history. Deletion is gated behind a + // type-to-confirm dialog in the UI — this is intentionally permanent. + $qrCode->scans()->delete(); + $qrCode->delete(); + + return redirect() + ->route('user.qr-codes.index') + ->with('success', 'QR code deleted.'); + } + public function stylePreview(Request $request): Response { $validated = $request->validate(array_merge($this->styleRules(), [ diff --git a/resources/views/qr-codes/show.blade.php b/resources/views/qr-codes/show.blade.php index 4a0ad03..6ce791d 100644 --- a/resources/views/qr-codes/show.blade.php +++ b/resources/views/qr-codes/show.blade.php @@ -339,5 +339,52 @@ + {{-- Danger zone: delete this QR code (type-to-confirm, not a one-click delete) --}} +
The printed code stops working permanently and its scan history is removed. This can't be undone.
++ This permanently deletes the code and its scan history. Anyone who scans the printed code will get an error. + This cannot be undone. +
+ + +