laravel Gate 权限 关联模型 嵌套
在使用larave 的gate做权限验证的时候
Admin_users(用户表) Admin_roles(角色表) Admin_permissions(权限表) 都是多对多关系
首先,在App/providers/AuthServiceProvider 中注册gate
$permissions=AdminPermission::all();
foreach ($permissions as $permission){
//$AdminUser为当前的用户对象
Gate::define($permission->name,function($AdminUser) use ($permission){
return $AdminUser->hasPermission($permission);
});
}
AdminUser.php中hasPermission()代码
代码说明 relRole为AdminUser中定义的模型关联,关联到Admin_roles表
relPermission 为AdminRole中定义的模型关联,关联到Admin_permissions表
这段代码是一个模型的嵌套关联, 目的就是为了获取当前用户拥有的权限
// 当前用户是否有某个权限
public function hasPermission($permission){
//获取当前用户的所有权限
$allPermission=$this->with(['relRole.relPermission'])->find($this->id);
dd($allPermission);
return !! $allPermission->contains($permission);
}
目前的问题:
我本身想获取用户的全部权限和当前权限进行比对,但是现在有两个问题
1.权限散落不同的角色数据下.
2.用集合的contains()方法进行判断时,提示函数不存在,因为它本身不是一个集合.
附获取的$allPermision数据
根据用户 获取该用户所有的权限 ,并判断当前权限是否在用户的权限中,这段业务逻辑,我该怎么修改我的代码了,多谢大家指正
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论