讨论数量:
我是依赖于 laravel-permission
基础上封装了一层权限处理方式
public function destroy(User $user)
{
\throw_can(UserPermission::delete());
}
UserPermission
文件
<?php
namespace App\Permissions;
/**
* @method static bool root()
* @method static bool create()
* @method static bool edit()
* @method static bool delete()
* @method static bool possessed()
* @method static bool resetPassword()
*/
class UserPermission extends BasePermission
{
//system.user => 用户列表
//system.user.create => 用户新增
//system.user.edit => 用户编辑
//system.user.delete => 用户删除
//system.user.possessed => 用户附身
//system.user.reset-password => 重置密码
public static function getParentPermission()
{
return 'system'; // TODO: Change the autogenerated stub
}
}
按照楼主的方式:
- 如果是少量的资源需要依赖于用户,建议考虑全局作用域
Global Scope
- 如果是全局少量引用模型 比如Host 模型, 全局都要用, 按照面向对象方式定义也可以
public function isOwner() { return $this->user_id === option(auth('sanctum'))->id() }
- 权限分为操作权限 和数据权限 : 操作权限可以按照上面去操作, 数据权限 一般采用全局作用域或者 面向对象方式定义,提供单一入口,单一出口 ,这样后期不会修改起来很难找
以上可以参考,这样如果逻辑调整,全局也好找,尽量采用面向对象放肆,让调用成链式
抱歉呀,这个问题没有最佳答案,故将此回复设置为最佳答案,给大家快捷参考一下。
根据大家的回复,我选择了两个。
一个是 Laravel 官方推荐的用户策略
一个是来自 raybon 的依赖于 laravel-permission
基础上封装了一层权限处理方式
结论: 可以根据自己的需求选择适合的方式。
抱歉呀,这个问题没有最佳答案,故将此回复设置为最佳答案,给大家快捷参考一下。
根据大家的回复,我选择了两个。
一个是 Laravel 官方推荐的用户策略
用户授权《Laravel 9 中文文档》
一个是来自 raybon 的依赖于
laravel-permission
基础上封装了一层权限处理方式回复在这里
结论: 可以根据自己的需求选择适合的方式。