2017-12-28 24 views
5

Statt der Laravel Multi-Auth verwende ich meine eigene (primitive) Methode, um Admin-Benutzer haben.Wie auf Admin-Seite mit benutzerdefinierten Admin-Tabelle umgeleitet werden

Ich habe nur eine zusätzliche Tabelle in der Datenbank PAdmin und in dieser Tabelle habe ich die IDs der Benutzer admin.

Wenn ich mich bei der Anwendung anmelde, möchte ich die Admin-Benutzer auf eine andere Seite statt der home Seite umleiten.

Aus diesem Grund ging ich zu Http \ Middleware \ RedirectIfAuthenticated und den Code geändert, so von dieser:

public function handle($request, Closure $next, $guard = null) 
{ 

    if (Auth::guard($guard)->check()) { 
    return redirect('/home'); 

} 

return $next($request); 


} 

ich es so weit geändert:

public function handle($request, Closure $next, $guard = null) 
{ 

    $user_id = Auth::id(); 


    $isAdmin = PAdmin::where('user_id',$user_id)->get()->isEmpty();//returns 'true' if empty 

    if (Auth::guard($guard)->check() && $isAdmin) {//IF $isAdmin is TRUE it means that the user is not admin 

     return redirect('/home'); 
    }elseif (Auth::guard($guard)->check() && !($isAdmin)){//IF $isAdmin is FALSE it means that the user is not admin 

     return redirect('/admin'); 
    } 

    return $next($request); 
} 

Die Idee ist einfach - wenn Es ist ein Datensatz mit der Benutzer-ID in der PAdmin Tabelle $isAdmin wird falsch sein und die elseif wird ausgeführt.

Leider funktioniert das nicht und ich weiß nicht warum.

Vielleicht ist dies nicht der richtige Weg, es überhaupt zu tun.

Kann mir jemand helfen, das richtig zu machen.

P.S. Ich möchte nicht multi auth verwenden.

+0

Überprüfen Sie zuerst Ihre -> get() Daten. – jjwdesign

+0

Sie sollten das wirklich ändern "Wenn $ isAdmin WAHR ist bedeutet dies, dass der Benutzer nicht Admin ist" –

Antwort

3
public function handle($request, Closure $next, $guard = null) 
{ 

    if (Auth::guard($guard)->check()) { 
    if(PAdmin::where('user_id',Auth::id())->first() != null) return redirect('/admin'); 
    return redirect('/home'); 

} 

return $next($request); 


} 

Deutlicher und einfacher.

Verwandte Themen