Bonjour,
Bonjour je travaille sur laravel 5.7 mais j'ai un soucis avec l'authentification suis parti de l'authentification de base de laravel ensuite jai crée un middleware admin, ajouter un role_id sur la table users mais lors de l'authification je suis toujours redirigé sur la homepage meme si l'utilisateur est un administrateur c'est assez étrange je vous mets mon fichier de routing ainsi que le constructeur du controlleur login
fichier de routing
Route::get('/', 'HomeController@index')->name('home');
Auth::routes();
Route::get('/confirm/{id}/{token}','Auth\RegisterController@confirm');
Route::group(['as'=>'admin.','prefix'=>'admin','namespace'=>'Admin','middleware'=>['auth','admin']], function (){
Route::get('dashboard','DashboardController@index')->name('dashboard');
});
loginController
public function __construct()
{
if (Auth::check() && Auth::user()->role_id == 1) {
$this->redirectTo = route('admin.dashboard');
} else {
$this->redirectTo = route('agent.dashboard');
}
$this->middleware('guest')->except('logout');
}
Jessaye de rediriger l'utilisateur sur le dashboard s'il est admin ou sur la homepage s'il est juste membre
jai aussi modifier le middleware RedirecIfAuthenticated pour ajouter cette logique mais rien n'y fait toujours redirigé vers la homePage ! De l'aide SVP
Bonjour.
Il est inutile de créer deux fois le même sujet.
Même si l'intitulé de son titre n'est pas exactement le même, si son contenu est le même, il est malgrès tout identique.
Je te recommande donc de supprimer immédiatement l'autre sujet.
Il faut aller modifier le fichier RedirectIfAuthenticated.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
/*if (Auth::guard($guard)->check()) {
return redirect('/home');
}*/
if (Auth::check() && Auth::user()->role_id == 1) {
return redirect()->route('admin.dashboard');
} else {
return redirect()->route('agent.dashboard');
}
return $next($request);
}
}
Je vous conseil cette methode https://hdtuto.com/article/laravel-57-multiple-authentication-example
J'ai modifié le fichier redirectIfAuthenticated mais ça ne change pas grand chose
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check() && Auth::user()->role_id == 1) {
return redirect('/admin/dashboard');
}elseif(Auth::guard($guard)->check() && Auth::user()->role_id == 2){
return redirect('/agent/dashboard');
}else {
return $next($request);
}
}
@ndiayejp: Petite clarification, il est inutile de mettre le return $next($request);
dans une condition, car pour commencer les conditions précédentes font déjà un return
et c'est un code qui s'effectuera de toute manière si l'un des deux autres cas n'est pas rencontré.
Le mieux c'est de ne pas utiliser le systeme d'authentification de laravel mais ecrire ton propre systeme d'authentification la tu aura plus de controle sur la redirection