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
.
Najpierw sprawdź dane -> get(). – jjwdesign
Naprawdę powinieneś to zmienić "jeśli $ isAdmin ma wartość PRAWDA, oznacza to, że użytkownik nie jest administratorem" –