laravel 8 中的多用户角色

Multi user role in laravel 8

我想根据角色重定向到用户的仪表板。我为用户角色创建了一个单独的 table,为用户创建了一个单独的 table。我不明白我该怎么做。

这是我的中间件代码

public function handle(Request $request, Closure $next)
    {
        if(!Auth::check()){
            return redirect()->route('login.user')->with('error', 'Please login first');
        }

        if(Auth::user()->role == 1){
            return $next($request);
        }

        if(Auth::user()->role == 2){
            return redirect()->route('user.dashboard');
        }
    }

这是我的用户角色table

id user_type
1 admin
2 user

这是我的用户table

id user_name user_role_id
1 admin 1
2 user 2

如果你能帮助我,我会很高兴。

在用户模型中,您必须定义角色关系。

将此放入您的用户模型中:

    public function role()
    {
       return $this->belongsTo(Role::class, 'user_role_id');
    }

当然你必须有角色模型,但我猜你已经有了那个

public function handle(Request $request, Closure $next)
    {
        if(!Auth::check()){
            return redirect()->route('login.user')->with('error', 'Please login first');
        }

        if(Auth::user()->role->user_type == 'admin'){
            return $next($request);
        }

        if(Auth::user()->role->user_type == 'user'){
            return redirect()->route('user.dashboard');
        }
    }

另一种解决方案可能没有关系,就像这样:

public function handle(Request $request, Closure $next)
    {
        if(!Auth::check()){
            return redirect()->route('login.user')->with('error', 'Please login first');
        }

        if(Auth::user()->user_role_id == 1){
            return $next($request);
        }

        if(Auth::user()->user_role_id == 2){
            return redirect()->route('user.dashboard');
        }
    }