認証前のユーザが/admin
配下ページにアクセスしてきたら/admin/login
に、/user
配下ページにアクセスしてきたら/user/login
にリダイレクトさせたかった。
前提
-
config/auth.php
のguards
にusers
とかadmin
が追加されている -
$this->middleware('auth:admin');
的なコードが記述されている
Handler.phpを編集
exception->guards()[0]
でアクセスしようとしたURLがなんのguard
によって弾かれたかが取れる。
app/Exceptions/Handler.php
protected function unauthenticated($request, AuthenticationException $exception)
{
if($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
switch($exception->guards()[0]){
case 'user':
return redirect()->guest('user/login');
break;
case 'admin':
return redirect()->guest('admin/login');
break;
default:
return redirect('/');
break;
}
}