我在角色模型和用户模型之间建立了多对多关系。他们有一个名为role_user
的数据透视表。它由id
,user_id
和role_id
组成。
我的用户模型具有以下关系:
public function roles(){
return $this->belongsToMany('App\Role');
}
和此功能:
public function hasRole($role){
return null !== $this->roles()->where("name", $role)->first();
}
在尝试检查用户是admin还是Super Admin之前,我正在尝试创建PostPolicy类。
public function before(User $user){
if($user->hasRole('Admin') || $user->hasRole('Super Admin') ){
return true ;
}
}
该函数返回错误响应,但是我以具有管理员角色的用户身份登录。
我的角色表:
id
name
description
created_at
updated_at
用户:
id
name
email
email_verified_at
password
remember_token
created_at
updated_at
答案 0 :(得分:2)
当我编写您的代码并附加角色时,它便开始起作用:
$user->roles()->attach($roleName);
我还在return false
方法的if
下添加了PostPolicy@before
)-这里工作正常example
答案 1 :(得分:0)
您还在角色模型上设置了用户功能吗?
我相信您必须同时具备许多功能才能在Laravel中正常工作。