ユーザーがエディターとしてログインしているかどうかを確認した後、プロファイルページにリダイレクトする必要があります...
これが私のコードです:
<?php namespace App\Http\Middleware;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
use Closure;
class AdminMiddleware {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(Auth::check()){
if(Auth::user()->roles->toArray()[0]['role'] == 'editor'){
return redirect('/profile');
}
return $next($request);
}
else
{
return $next($request);
}
}
}
このコードの問題は、ユーザーがエディターの場合に無限ループが発生することです...
これが私の敗走です:
Route::group(['middleware' => 'auth'], function(){
Route::get('home', ['middleware' => 'admin', function()
{
return view('home');
}]);
Route::get('profile', array(
'as' => 'profile',
'uses' => 'UserController@getProfile'
));
});
誰が何が問題なのか知っていますか?
ミドルウェアをApp\Http\Kernel
のどこに登録しましたか?
保護された$middleware = []
またはprotected $routeMiddleware = []
にありますか?
$middleware
に登録されている場合は、リクエストごとに実行されるため、無限ループが発生します。その場合は、$routeMiddleware
のみを使用してください。
これは、ロールに基づいてユーザーをリダイレクトするためのコードと決定が少ないことがわかりました。これをAuthController.phpに入れてください
protected function authenticated( $user)
{
if($user->user_group == '0') {
return redirect('/dashboard');
}
return redirect('my-account');
}
Kernel.php
にアクセスします。 app\http
にあります。これを追加する必要がある配列でprotected $routeMiddleware
を見つけてください
'admin' => \App\Http\Middleware\AdminMiddleware::class
その後は問題なく動作するはずです。これが同じ問題に直面している人を助けることを願っています。