やりたい事: ログイン後に、管理者権限(role_id==2)の時は、管理者画面トップ('/admin')にリダイレクトさせ、一般権限の時は、一般権限トップ('/')にリダイレクトさせたい。
- 一般権限のトップを('/')にしようとすると、RouteServiceProviderでログイン後のリダイレクト先URLを指定していても、'/'に遷移してしまう。
- ('/')を'middleware' => 'auth'のルーティングから外し、一般権限のトップを('/home')などにすると、ログイン後にRouteServiceProviderで指定したパスに遷移する。
app/Providers/RouteServiceProvider.php
php
1public const HOME = '/auth';
routes/web.php
php
1Route::group(['middleware' => 'auth' ], function(){ 2 Route::get('/auth', [AdminController::class, 'auth']); 3 Route::get('/', [GeneralController::class, 'index']); 4}); 5Route::group(['middleware' => ['auth','IsAdmin'] ], function(){ 6 Route::get('/admin', [AdminController::class, 'admin']); 7});
app/Http/Controller/AdminController.php
php
1 public function auth(){ 2 event(new Logined()); 3 $this->middleware('IsAdmin'); 4 return redirect('/admin'); 5 } 6 public function admin(){ 7 return view('admin.index') 8 }
app/Http/Middleware/
php
1public function handle(Request $request, Closure $next) 2 { 3 $user = Auth::user(); 4 if(!$user->isAdmin()){ 5 return redirect()->intended('/'); 6 } 7 return $next($request); 8 }
app/Models/User
php
1public function isAdmin(){ 2 if($this->role_id == 1){ 3 return true; 4 } 5 return false; 6 }
ルーティングで'middleware' => 'auth'の中に('/')を書くと、それが優先されるのでしょうか?
ログイン後に('/')ではなく、指定したURLに遷移する書き方を教えていただきたいです。
あなたの回答
tips
プレビュー