From 85dbb3500dec039f57138e0134cfce95a68484cf Mon Sep 17 00:00:00 2001 From: eldIsher <138291070+eldIsher@users.noreply.github.com> Date: Sat, 22 Jul 2023 11:29:03 +0200 Subject: [PATCH 1/3] reset all cookies with queue --- src/Http/Controllers/ResetController.php | 26 ++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/Http/Controllers/ResetController.php b/src/Http/Controllers/ResetController.php index 47121ca..87deeb5 100644 --- a/src/Http/Controllers/ResetController.php +++ b/src/Http/Controllers/ResetController.php @@ -2,14 +2,16 @@ namespace Whitecube\LaravelCookieConsent\Http\Controllers; -use Whitecube\LaravelCookieConsent\CookiesManager; +use Illuminate\Support\Facades\Cookie; use Illuminate\Http\Request; +use Whitecube\LaravelCookieConsent\CookiesManager; +use Whitecube\LaravelCookieConsent\Facades\Cookies; + -class ResetController -{ - public function __invoke(Request $request, CookiesManager $cookies) - { - $response = ! $request->expectsJson() +class ResetController { + + public function __invoke(Request $request, CookiesManager $cookies) { + $response = !$request->expectsJson() ? redirect()->back() : response()->json([ 'status' => 'ok', @@ -17,6 +19,18 @@ public function __invoke(Request $request, CookiesManager $cookies) 'notice' => $cookies->getNoticeMarkup(), ]); + $domain = config('cookieconsent.cookie.domain'); + + // delete all defined cookies + foreach (Cookies::getCategories() as $category) { + foreach ($category->getCookies() as $cookie) { + Cookie::queue(Cookie::forget( + name: $cookie->name, + domain: $domain, + )); + } + } + return $response->withoutCookie( cookie: config('cookieconsent.cookie.name'), domain: config('cookieconsent.cookie.domain'), From 0eaf7115a3f6307461d4ba0486a15cb3060a4422 Mon Sep 17 00:00:00 2001 From: eldIsher <138291070+eldIsher@users.noreply.github.com> Date: Sat, 22 Jul 2023 11:29:44 +0200 Subject: [PATCH 2/3] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 9a34fc0..3f2bebc 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,10 @@ Then, let's add consent scripts and modals to the application's views using the ``` +### Middleware + +Add `AddQueuedCookiesToResponse` to your `$middleware` or `$middlewareGroups`. The controller `Whitecube\LaravelCookieConsent\Http\Controllers\ResetController` uses cookie queue to reset cookies. + ## Registering cookies This package aims to centralize cookie declaration and documentation at the same place in order to keep projects maintainable. However, the suggested methodology is not mandatory. If you wish to queue cookies or execute code upon consent somewhere else in your app's codebase, feel free to do so: we have a few available methods that can come in handy when you'll need to [check if consent has been granted](#checking-for-consent) during the request's lifecycle. From e74e7f0c61bee971cb341b9bba03845c71207076 Mon Sep 17 00:00:00 2001 From: eldIsher <138291070+eldIsher@users.noreply.github.com> Date: Sat, 22 Jul 2023 11:45:35 +0200 Subject: [PATCH 3/3] set Cache-Control to script --- routes/web.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/routes/web.php b/routes/web.php index da89575..1aca8d3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -13,7 +13,8 @@ 'prefix' => config('cookieconsent.url.prefix'), ], function() { Route::get('script', ScriptController::class) - ->name('script'); + ->name('script') + ->middleware('cache.headers:public;max_age=2628000;etag'); Route::post('accept-all', AcceptAllController::class) ->name('accept.all');