permissions

基于 Laravel Policy 声明式管理角色权限的 PHP 包

安装使用

复制下面这段提示词发给你的 AI(Claude / Cursor / TRAE / Codex / WorkBuddy 等),它会自动帮你完成安装:

帮我安装这个 AI Skill:permissions。
它的用途是:基于 Laravel Policy 声明式管理角色权限的 PHP 包
完整的 Skill 内容见:https://321skill.com/skills/permissions/raw/index.md
请读取该页面内容,如果是 SKILL.md 格式直接安装,如果是 README 提炼核心 prompt 后安装。

提示词包含完整的 Skill 内容链接,AI 读取后即可完成安装。你也可以 查看完整内容 确认无误。

使用示例

“我正在开发一个 Laravel 后台管理系统,需要为文章模块设置权限:管理员拥有所有权限,编辑可以增删改查,访客只能查看列表和详情。如何快速实现?” 它会引导你使用 Philsquare Permissions:首先通过 make:policy --withPermissions 创建文章策略,在 rolePermissions 方法中定义角色映射;然后运行 permissions:refresh 命令同步权限到数据库;最后为用户分配角色即可。整个过程将权限逻辑清晰地封装在策略类中。

介绍

Philsquare Permissions 是一个 Laravel 扩展包,旨在解决在 Laravel 应用中管理角色和权限时,代码逻辑与数据库权限定义分散、难以同步和维护的问题。它通过在策略类中声明式地定义角色与权限的映射关系,并提供一个命令将策略中的权限结构同步到数据库中,从而将权限控制的逻辑集中在策略文件中,简化了权限系统的管理。

使用该包时,开发者首先需要创建或修改策略类,使其继承自包提供的 BasePolicy,并在其中通过 rolePermissions 方法定义不同角色(如 admin、editor)对模型的操作权限集合。之后,运行 php artisan permissions:refresh 命令,即可自动扫描所有策略,创建缺失的角色、权限,并完成关联同步。最后,使用 Spatie Laravel Permission 包提供的方法为用户分配角色,即可在应用各处使用 Laravel 标准的授权方式(如 can、authorize)进行权限检查。

这个 Skill 非常适合后端开发、全栈开发以及需要为 Laravel 应用构建清晰、可维护的权限系统的项目经理。它特别适用于那些已经使用或计划使用 Spatie Laravel Permission 包,但希望以更集中、声明式的方式管理权限映射关系的团队。

使用建议是,在项目初期或重构权限系统时引入此包,可以更好地组织权限逻辑。需要注意的是,它深度依赖 Spatie Laravel Permission 包,因此需要先完成该包的安装和基础配置。此外,权限的命名遵循“模型:操作”的烤肉串格式,需注意与策略方法名的对应关系。

核心特点

与直接使用 Spatie Laravel Permission 包相比,其核心区别在于将角色与权限的映射关系声明式地定义在策略类内部,实现了权限逻辑与业务逻辑的集中管理,并通过自动化命令同步至数据库,避免了手动维护数据库权限记录的繁琐和可能的不一致。

注意事项

仅适用于基于 Laravel 框架并使用 Spatie Laravel Permission 包的项目,不适用于其他 PHP 框架或非 PHP 环境。

常见问题

如何为自定义的 Policy 方法(非 CRUD)定义权限?

在 rolePermissions 方法中,使用 $this->permissions()->only() 或直接列出方法名即可,包会自动将方法名转换为 kebab-case 格式的权限名(如 updateEta -> update-eta)。

运行 permissions:refresh 命令会删除现有的角色和权限吗?

不会,该命令只会创建缺失的角色和权限,并同步映射关系,不会删除数据库中已存在的记录。

给 AI 助手的安装指引

如果你的 AI 编程助手(Claude Code、Cursor、TRAE 等)能看到这个页面,把下面这段发给它即可自动完成安装:

请访问 https://321skill.com/skills/permissions/raw/index.md 读取 permissions 的原始 Skill 定义(Markdown 格式),按其中说明在我的环境里完成安装和配置。