AuthService Provider:
public function boot(GateContract $gate)
{
$this->registerPolicies($gate);
$gate->define('show-user', function ($admin) {
return $admin->hasRole('Admin');
});
}
Admin是一名Auth Guard
控制器:
public function edit($admin) {
if (Gate::allows('show-user'))
return 'allow';
else {
return 'deny';
}
}
Gate始终返回' Deny'
我有一个执行相同工作的存储库功能。
public function checkPermission($admin) {
return $this->auth->hasRole('Admin') || $this->auth->id === $admin->id;
}
答案 0 :(得分:1)
为什么要将$admin->roles
与字符串进行比较?从属性名称看起来可能会返回多个角色,可能是逗号分隔的字符串或数组?您必须确保检查“管理员”是其中一个角色。
例如,如果它返回一个数组,你可以这样做:
return in_array('Admin', $admin->roles);