2016-07-14 12 views
2

Ich muss Benutzer basierend auf ihrer Rolle in der Anwendung umleiten. In MySQL habe ich in der Tabelle "Benutzer" die Spalte "isAdmin" hinzugefügt, um zu überprüfen, ob der Benutzer admin ist oder nicht. Die einzige Lösung, die ich mir ausgedacht habe, ist HTML auf dem gleichen Blade nach Benutzer Typ zu rendern. Zum Beispiel.Umleiten authentifizierter Benutzer nach ihrer Rolle

@if(Auth::user()->isAdmin == 1) 
<p>Hello, Admin</p> 
//other html for admin 

@else 
//other html for users 

Gibt es einen besseren Weg, dies zu schöner und effizientem Code in Bezug zu tun, weil diese unordentlich aussieht? Ich benutze dieses Paket (https://github.com/acacha/adminlte-laravel) welches Laravels Standardauthentifizierungssystem verwendet.

Ich möchte Benutzer während ihrer Anmeldung zu zwei verschiedenen Blades umleiten, sagen wir homeUsers.blade.php und admin.blade.php.

Antwort

2

Logik ist hier: Der beste Weg ist zwei Tabellen einen users und andere roles, zu erstellen und zu role_id in Benutzern Tisch als fremd key.Then eine Beziehung, dass eine Rolle belongsTo einen Benutzer erstellen.

Wenn Sie jedoch zwei Ansichten haben und eine für Admin und andere für andere Benutzer anzeigen möchten, folgen Sie der unten stehenden Methode.

Erstellen Sie zwei Ansichten, die Sie in Ihrem Fall 1) admin 2) Heimbenutzer

@if(Auth::user()->isAdmin == 1) 
    @include('admin') //admin.blade.php 
@else 
@include('homeUsers') //homeUsers.blade.php 
+0

Dies scheint die beste Option für mich. Ich habe versucht, Lösung, die @ Daniel vorgeschlagen, aber es funktioniert nicht in meinem Fall. Vielleicht mache ich etwas falsch, aber jetzt werde ich Ihre Lösung verwenden. – harunB10

+0

@ harunB10 Ich bin froh, Ihnen zu helfen, Prost! –

+1

Ich habe vergessen zu erwähnen für andere, die vielleicht das gleiche Problem haben. Es sollte '@include ('admin')' anstelle von '@include ('admin.blade.php')' sein. (ohne Erweiterungen) – harunB10

1

Ich bin nicht sicher, welche Version von Laravel Sie verwenden verwenden möchten, aber dies scheint, wie es in sein sollte deine Middleware.

Auschecken RedirectIfAuthenticated.php in Middleware. Dann könnten Sie Folgendes tun.

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     if (Auth::user()->role == 'Admin') 
     { 
      return redirect('/admin'); 
     } 
     else 
     { 
      return redirect('/home') 
     } 
    } 

    return $next($request); 
} 
Verwandte Themen