J'ai besoin après vérification si l'utilisateur est connecté en tant qu'éditeur, pour rediriger vers la page de profil ...
Voici mon code:
<?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);
}
}
}
Le problème avec ce code, c'est quand l'utilisateur est éditeur, je reçois une boucle infinie ....
Voici mes routes:
Route::group(['middleware' => 'auth'], function(){
Route::get('home', ['middleware' => 'admin', function()
{
return view('home');
}]);
Route::get('profile', array(
'as' => 'profile',
'uses' => 'UserController@getProfile'
));
});
Quelqu'un sait quel est le problème?
Où avez-vous enregistré votre middleware dans App\Http\Kernel
?
Est-il protégé $middleware = []
ou protected $routeMiddleware = []
?
S'il est enregistré dans $middleware
, il s'exécutera à chaque requête même, provoquant ainsi une boucle infinie. Dans ce cas, utilisez uniquement $routeMiddleware
J'ai trouvé que c'était moins de code et moins de décisions pour rediriger les utilisateurs en fonction des rôles, mettez ceci dans votre AuthController.php
protected function authenticated( $user)
{
if($user->user_group == '0') {
return redirect('/dashboard');
}
return redirect('my-account');
}
Allez à Kernel.php
. C'est dans app\http
. Essayez de trouver protected $routeMiddleware
Dans ce tableau, vous devez ajouter ceci
'admin' => \App\Http\Middleware\AdminMiddleware::class
Après cela, tout devrait bien fonctionner. J'espère que cela aidera toute personne confrontée au même problème.