Skip to content

Commit 1aa0a36

Browse files
authored
Uncacheable middleware (#1079)
1 parent 4d1c774 commit 1aa0a36

File tree

3 files changed

+46
-5
lines changed

3 files changed

+46
-5
lines changed

routes/web.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,15 @@
1515

1616
Route::middleware('web')->group(function () {
1717
Route::view('cart', 'rapidez::cart.overview')->name('cart');
18-
Route::get('checkout/success', config('rapidez.routing.controllers.checkout-success'))->name('checkout.success');
1918

20-
Route::get('checkout/onepage/success', fn () => redirect(route('checkout.success', request()->query()), 308));
21-
Route::get('checkout/signed', SignedCheckoutController::class)->name('signed-checkout');
22-
Route::get('checkout/{step?}', config('rapidez.routing.controllers.checkout'))->middleware('auth:magento-cart')->name('checkout');
19+
Route::middleware('uncacheable')->group(function () {
20+
Route::get('checkout/success', config('rapidez.routing.controllers.checkout-success'))->name('checkout.success');
21+
Route::get('checkout/onepage/success', fn () => redirect(route('checkout.success', request()->query()), 308));
22+
Route::get('checkout/signed', SignedCheckoutController::class)->name('signed-checkout');
23+
24+
Route::get('checkout/{step?}', config('rapidez.routing.controllers.checkout'))->middleware('auth:magento-cart')->name('checkout');
25+
});
26+
2327
Route::get('search', config('rapidez.routing.controllers.search'))->name('search');
2428
Route::fallback(config('rapidez.routing.controllers.fallback'));
2529
});
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Rapidez\Core\Http\Middleware;
4+
5+
use Closure;
6+
use Illuminate\Http\Request;
7+
use TorMorten\Eventy\Facades\Eventy;
8+
9+
class Uncacheable
10+
{
11+
public function handle(Request $request, Closure $next)
12+
{
13+
Eventy::filter('uncacheable.request', $request);
14+
15+
$response = $next($request);
16+
17+
Eventy::filter('uncacheable.response', $response);
18+
19+
return $response;
20+
}
21+
}

src/RapidezServiceProvider.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Contracts\Debug\ExceptionHandler;
88
use Illuminate\Contracts\Http\Kernel;
99
use Illuminate\Http\Request;
10+
use Illuminate\Http\Response;
1011
use Illuminate\Support\Collection;
1112
use Illuminate\Support\Facades\Blade;
1213
use Illuminate\Support\Facades\Event;
@@ -33,6 +34,7 @@
3334
use Rapidez\Core\Http\Middleware\CheckStoreCode;
3435
use Rapidez\Core\Http\Middleware\ConfigForTesting;
3536
use Rapidez\Core\Http\Middleware\DetermineAndSetShop;
37+
use Rapidez\Core\Http\Middleware\Uncacheable;
3638
use Rapidez\Core\Listeners\Healthcheck\ElasticsearchHealthcheck;
3739
use Rapidez\Core\Listeners\Healthcheck\MagentoSettingsHealthcheck;
3840
use Rapidez\Core\Listeners\Healthcheck\ModelsHealthcheck;
@@ -42,6 +44,7 @@
4244
use Rapidez\Core\ViewComponents\PlaceholderComponent;
4345
use Rapidez\Core\ViewDirectives\WidgetDirective;
4446
use Symfony\Component\HttpKernel\Exception\HttpException;
47+
use TorMorten\Eventy\Facades\Eventy;
4548

4649
class RapidezServiceProvider extends ServiceProvider
4750
{
@@ -69,7 +72,8 @@ public function boot()
6972
->bootScout()
7073
->bootTranslations()
7174
->bootListeners()
72-
->bootMacros();
75+
->bootMacros()
76+
->bootUncacheable();
7377
}
7478

7579
public function register()
@@ -230,6 +234,7 @@ protected function bootMiddleware(): self
230234
$this->app->make(Kernel::class)->pushMiddleware(DetermineAndSetShop::class);
231235

232236
$this->app['router']->aliasMiddleware('store_code', CheckStoreCode::class);
237+
$this->app['router']->aliasMiddleware('uncacheable', Uncacheable::class);
233238

234239
return $this;
235240
}
@@ -299,6 +304,17 @@ function ($filename) use ($manifest) {
299304
return $this;
300305
}
301306

307+
protected function bootUncacheable(): static
308+
{
309+
Eventy::addFilter('uncacheable.response', function (Response $response) {
310+
$response->setPrivate();
311+
312+
return $response;
313+
});
314+
315+
return $this;
316+
}
317+
302318
protected function registerConfigs(): self
303319
{
304320
$this->mergeConfigFrom(__DIR__ . '/../config/rapidez.php', 'rapidez');

0 commit comments

Comments
 (0)