jetStreamを使ってみて、認証関連のリダイレクト先で戸惑ったのでメモします。
新規登録、ログイン
「RouteServiceProvider」の定数「HOME」を参照しているようです。
また、初期値には'/dashboard' が指定されていました。
app/Providers/RouteServiceProvider.php
/* 略 */
class RouteServiceProvider extends ServiceProvider
{
/* 略 */
public const HOME = '/dashboard';
/* 略 */
}
ログアウト
ログアウト処理のリダイレクト処理は、デフォルトでは以下クラスのメソッドを使用しているようです。
vendor/laravel/fortify/src/Http/Responses/LogoutResponse.php
/* 略 */
class LogoutResponse implements LogoutResponseContract
{
/* 略 */
public function toResponse($request)
{
return $request->wantsJson()
? new JsonResponse('', 204)
: redirect(Fortify::redirects('logout', '/'));
}
}
これをオーバーライドすれば、リダイレクト先を変更可能とのこと。
今回は、参考にさせていただいたサイトのとおり、「app\Http\Responses\LogoutResponse.php」ファイルを作成します。
※Responsesディレクトリも、デフォルトでは無かったので作成します。
app\Http\Responses\LogoutResponse.php
<?php
namespace App\Http\Responses;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Laravel\Fortify\Contracts\LogoutResponse as LogoutResponseContract;
use Laravel\Fortify\Fortify;
class LogoutResponse implements LogoutResponseContract
{
/**
* Create an HTTP response that represents the object.
*
* @param \Illuminate\Http\Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function toResponse($request)
{
return $request->wantsJson()
? new JsonResponse('', 204)
: redirect('/');
}
}
また、作成したクラスを「app\Providers\FortifyServiceProvider.php」の「boot」メソッドに記述することで、デフォルトの処理をオーバーライドできるようです。
app\Providers\FortifyServiceProvider.php
public function boot()
{
/* 略 */
$this->app->singleton(
\Laravel\Fortify\Contracts\LogoutResponse::class,
\App\Http\Responses\LogoutResponse::class
);
}
・参考にさせていただいたサイト
https://stackoverflow.com/questions/65822861/laravel-fortify-logout-redirect