如何使用自定义管理表重定向到管理页面

inc*_*ick 5 php laravel eloquent laravel-5.4

我使用自己的(原始)方法来管理用户,而不是laravel multi auth.

我只是在数据库中有一个额外的表,PAdmin在这个表中我有管理员用户的id.

当我登录到应用程序时,我想将管理员用户重定向到另一个页面而不是home页面.

出于这个原因,我去了Http\Middleware\RedirectIfAuthenticated并更改了代码,因此:

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

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

 }

 return $next($request);


}
Run Code Online (Sandbox Code Playgroud)

我改成了这个:

 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);
}
Run Code Online (Sandbox Code Playgroud)

这个想法很简单-如果与用户在ID的记录PAdmin$isAdmin将是错误的和elseif将要执行.

不幸的是,这不起作用,我不知道为什么.

也许这根本不是正确的做法.

有人可以帮助我做到这一点.

PS我不想用multi auth.

Lui*_*noz 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);


}
Run Code Online (Sandbox Code Playgroud)

更清晰、更容易。