In meinem Laravel 5.3-Setup verwende ich Bouncer Paket, und ich definierte zwei Rollen, admin
und customer
. Wenn Sie angemeldet sind, werden Kunden wie in protected $redirectTo = '/home';
unter App\Http\Controllers\Auth\LoginController.php
angegeben zu /home
umgeleitet. Wenn sich nun ein Benutzer mit der Rolle admin
anmeldet, wird er auch umgeleitet, weil $redirectTo
keine Unterscheidung zwischen Benutzerrollen macht. Mein Ziel ist es, Admin-Benutzer auf /admin/home
stattdessen umzuleiten.Rollenbasiertes Routing in LoginController (Auth)
Was ist die beste Lösung, um damit umzugehen? Hier ist mein Versuch.
In web.php
Routen, außerhalb jeder Middleware Gruppen:
Route::get('/home', function(Illuminate\Http\Request $request) { // http://myapp.dev/home
if (Auth::user()->isA('customer')) // -> goto [email protected]
return app()->make('\App\Http\Controllers\HomeController')->index($request);
else if (Auth::user()->isAn('admin')) // -> redirect
return redirect('/admin/home');
else
abort(403);
})->middleware('auth');
Route::group(['prefix' => 'admin','middleware' => 'auth'], function() {
Route::get('/home', 'Admin\[email protected]');
});
Alternativ kann dies kann auch in einer Middleware erfolgen:
Route::get('/home', '[email protected]')->middleware('auth', 'role');
// in VerifyRole.php middleware...
public function handle($request, Closure $next, $guard = null)
{
if (Auth::user()->isAn('admin')) {
return redirect('/admin/home');
}
return $next($request);
}
Dies funktionieren würde, aber es ist nicht skalierbar wenn mehr Rollen hinzugefügt werden. Ich bin sicher, dass es einen eleganten eingebauten Weg geben muss, um dies zu erreichen. Also die Frage ist, Wie route ich Benutzer zu ihrem richtigen Dashboard (d. H. home
) basierend auf ihrer Rolle?
Wird dies die eingebaute Logik, die diese Methoden standardmäßig enthalten, unterbrechen? – Alex
Nein, es wird nichts brechen. –
Ich will nicht unhöflich sein, aber könnten Sie bitte meine [andere Frage] (http://stackoverflow.com/questions/41201788/identifying-and-persisting-guest-users-in-laravel), es ist über die Identifizierung von Gastnutzern in Laravel. Danke im Voraus! – Alex