Zizaco/entrust 权限控制支持 auth guard 指定分组权限控制么?
项目里面用户 Auth 验证是分开的,后台用的 Auth::guard ('admin')->user () 来获取用户信息,权限控制用的 https://github.com/Zizaco/entrust 。
判断某个用户是否有某个权限,用如下方法写是可以的
//写法1
Auth::guard('admin')->user()->can('admin.post.create'); //true
换成这种写法就不行
//写法2
Entrust::can('admin.post.create'); //false
在 blade 里面这样写也是不行的
//写法3
@permission('admin.post.create')
I can create
@endpermission
调试发现,vendor/zizaco/entrust/src/Entrust/EntrustFacade.php 这个函数的 can 里面的 $this->user 打印出来是 null
/**
* Check if the current user has a permission by its name
*
* @param string $permission Permission string.
*
* @return bool
*/
public function can($permission, $requireAll = false)
{
if ($user = $this->user()) {
return $user->can($permission, $requireAll);
}
return false;
}
怎样才能在 auth 是多个分组的情况下也支持第二、三种写法呢?目前暂时用下面这个写法实现了,还有别的比较好的方法么?
//php 文件
$adminUserinfo = Auth::guard('admin')->user();
//blade 模板
@if($adminUserInfo->can('admin.post.create'))
<a>create</a>
@endif
推荐文章: