2017-12-28 94 views
5

Zamiast laravel multi auth używam własnej (pierwotnej) metody, aby mieć użytkowników adminów.Jak przekierować na stronę administratora z niestandardową tabelą administracyjną

Po prostu mam dodatkową tabelę w bazie danych o nazwie PAdmin iw tej tabeli mam identyfikatory administratorów.

Po zalogowaniu się do aplikacji chcę przekierować administratorów na inną stronę zamiast na stronę home.

Dlatego poszedłem do http \ Middleware \ RedirectIfAuthenticated i zmienił kod tak, z tego:

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

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

} 

return $next($request); 


} 

Zmieniłem go w ten sposób:

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); 
} 

Pomysł jest prosty - jeśli istnieje rekord z identyfikatorem użytkownika w tabeli PAdmin$isAdmin będzie fałszywy, a elseif zostanie wykonany.

Niestety to nie działa i nie wiem dlaczego.

Może to nie jest właściwy sposób, aby to zrobić.

Czy ktoś może mi pomóc to naprawić.

P.S. Nie chcę używać multi auth.

+0

Najpierw sprawdź dane -> get(). – jjwdesign

+0

Naprawdę powinieneś to zmienić "jeśli $ isAdmin ma wartość PRAWDA, oznacza to, że użytkownik nie jest administratorem" –

Odpowiedz

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); 


} 

Bardziej przejrzyste i łatwiejsze.

Powiązane problemy