diff --git a/app/Http/Controllers/SubscriptionController.php b/app/Http/Controllers/SubscriptionController.php index 8575f51f..0971ea9c 100644 --- a/app/Http/Controllers/SubscriptionController.php +++ b/app/Http/Controllers/SubscriptionController.php @@ -62,7 +62,24 @@ class SubscriptionController extends Controller } /** - * Unsubscribe using token. + * Show unsubscribe confirmation page. + */ + public function showUnsubscribe(string $token) + { + $subscription = Subscription::where('unsubscribe_token', $token)->first(); + + if (!$subscription) { + abort(404, 'Invalid unsubscribe token.'); + } + + return inertia('Unsubscribe', [ + 'token' => $token, + 'email' => $subscription->email, + ]); + } + + /** + * Process unsubscribe request. */ public function unsubscribe(Request $request, string $token): JsonResponse { diff --git a/resources/js/Pages/Unsubscribe.vue b/resources/js/Pages/Unsubscribe.vue new file mode 100644 index 00000000..43864974 --- /dev/null +++ b/resources/js/Pages/Unsubscribe.vue @@ -0,0 +1,153 @@ + + + + + +
+ Are you sure you want to unsubscribe from email notifications for court docket updates? +
+ ++ Email: {{ email }} +
+ + ++ {{ message }} +
+ + ++ You can resubscribe anytime from the homepage +
+- Unsubscribe from notifications + Unsubscribe from notifications
diff --git a/routes/web.php b/routes/web.php index 6f879088..12e33b4b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -13,7 +13,8 @@ Route::get('/', [HomeController::class, 'index'])->name('home'); // Subscription API routes Route::post('/api/subscribe', [SubscriptionController::class, 'subscribe'])->name('api.subscribe'); -Route::get('/api/unsubscribe/{token}', [SubscriptionController::class, 'unsubscribe'])->name('api.unsubscribe'); +Route::get('/unsubscribe/{token}', [SubscriptionController::class, 'showUnsubscribe'])->name('unsubscribe'); +Route::post('/api/unsubscribe/{token}', [SubscriptionController::class, 'unsubscribe'])->name('api.unsubscribe'); // Document download route Route::get('/api/documents/{id}/download', [DocumentController::class, 'download'])->name('api.documents.download');