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');
}
}
我想根据角色重定向到用户的仪表板。我为用户角色创建了一个单独的 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');
}
}