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

时间:2017-12-28 17:40:53

标签: 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);


}

我把它更改为:

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

这个想法很简单 - 如果PAdmin$isAdmin中有用户ID的记录将为false,则elseif将会执行。

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

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

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

P.S。我不想使用multi auth

1 个答案:

答案 0 :(得分: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);


}

更清晰,更轻松。