Piszemy własne middleware. Kontynuacja lekcji poprzednich – do dzieła.
Ok, taki route robimy:
Route::get('/get-secret-cookie', function (Request $request) {
if($request->hasCookie('pswd')){
$secret = $request->cookie('pswd');
return "secret cookie: $secret";
} else {
return "There is no secret cookie set!";
}
})->name('secretcookie');
Teraz przekierowanko:
Route::get('/secret-cookie-redirect', function () {
return redirect()->route('secretcookie');
});
Nie ma opcji, żeby to cookie było. Zrobimy jednak middleware komendą:
php artisan make:middleware SecretCookieMiddleware
Pisaliśmy własny framework mający własne middleware, więc nie będę się przesadnie rozwodzić nad tym, co tu mamy:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\Cookie;
class SecretCookieMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle($request, Closure $next)
{
/** @var \Illuminate\Http\Response $response */
if($request->hasCookie('pswd'))
{
return $next($request);
}
else
{
Cookie::queue(Cookie::make('pswd', '123', 129600));
return $next($request);
}
}
}
Ogarnijmy tylko wszystkie importy i piszmy route:
use App\Http\Middleware\SecretCookieMiddleware;
//(...)
Route::get('/secret-cookie-redirect', function () {
return redirect()->route('secretcookie');
})->middleware([SecretCookieMiddleware::class]);
Teraz cookie zostanie zapisane i wyświetlone.