laravel-permission

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Laravel Permission (Spatie)

Laravel Permission (Spatie)

Agent Workflow (MANDATORY)

Agent工作流(必填)

Before ANY implementation, use
TeamCreate
to spawn 3 agents:
  1. fuse-ai-pilot:explore-codebase - Check existing auth patterns
  2. fuse-ai-pilot:research-expert - Verify Spatie Permission docs via Context7
  3. mcp__context7__query-docs - Check Laravel authorization patterns
After implementation, run fuse-ai-pilot:sniper for validation.

在进行任何实现之前,使用
TeamCreate
生成3个Agent:
  1. fuse-ai-pilot:explore-codebase - 检查现有身份验证模式
  2. fuse-ai-pilot:research-expert - 通过Context7验证Spatie Permission文档
  3. mcp__context7__query-docs - 检查Laravel授权模式
实现完成后,运行fuse-ai-pilot:sniper进行验证。

Overview

概述

Spatie Laravel Permission provides complete role-based access control (RBAC) for Laravel applications.
ComponentPurpose
RoleGroup of permissions (admin, writer)
PermissionSingle ability (edit articles)
MiddlewareRoute protection
Blade DirectivesUI authorization
TeamsMulti-tenant scoping
WildcardsHierarchical permissions
Super AdminBypass all checks
EventsAudit logging (v6.15.0+)
Query ScopesFilter users by role/permission
API SupportSanctum/Passport integration
PoliciesResource-based authorization

Spatie Laravel Permission为Laravel应用提供完整的基于角色的访问控制(RBAC)能力。
组件用途
Role权限集合(管理员、内容创作者)
Permission单个操作权限(编辑文章)
Middleware路由保护
Blade DirectivesUI层授权判断
Teams多租户权限隔离
Wildcards层级化权限管理
Super Admin绕过所有权限校验
Events审计日志(v6.15.0+支持)
Query Scopes按角色/权限筛选用户
API Support集成Sanctum/Passport
Policies基于资源的授权

Critical Rules

关键规则

  1. Seed roles/permissions in
    DatabaseSeeder
  2. Cache reset after changes:
    php artisan permission:cache-reset
  3. Use kebab-case for naming:
    edit-articles
  4. Never hardcode role checks in controllers - use middleware
  5. Set team context early in request for multi-tenant apps
  6. Specify guard for API -
    permission:edit,api
  7. Clear cache in tests - Reset in setUp()/beforeEach()

  1. DatabaseSeeder
    预填充角色/权限
  2. 权限修改后重置缓存
    php artisan permission:cache-reset
  3. 权限命名使用kebab-case格式:例如
    edit-articles
  4. 禁止在控制器中硬编码角色校验 - 请使用中间件实现
  5. 多租户应用需在请求生命周期早期设置团队上下文
  6. API场景需指定看守器:
    permission:edit,api
  7. 测试中需清空权限缓存 - 在setUp()/beforeEach()中执行重置

Reference Guide

参考指南

Core Concepts

核心概念

TopicReferenceWhen to consult
Setupspatie-permission.mdInstallation, model setup, core methods
Middlewaremiddleware.mdRoute protection patterns
Bladeblade-directives.mdUI authorization directives
Direct vs Roledirect-permissions.mdPermission inheritance
主题参考文档适用场景
基础配置spatie-permission.md安装、模型配置、核心方法使用
中间件middleware.md路由保护实现方案
Blade指令blade-directives.mdUI层授权指令使用
直接权限vs角色权限direct-permissions.md权限继承逻辑说明

Advanced Features

高级功能

TopicReferenceWhen to consult
Teamsteams.mdMulti-tenant permissions
Wildcardswildcard-permissions.mdHierarchical patterns
Super Adminsuper-admin.mdBypass all permissions
Custom Modelscustom-models.mdUUID, extending models
主题参考文档适用场景
团队权限teams.md多租户权限管理
通配符权限wildcard-permissions.md层级化权限配置
超级管理员super-admin.md全局权限绕过配置
自定义模型custom-models.mdUUID支持、模型扩展

Integration

集成方案

TopicReferenceWhen to consult
API Usageapi-usage.mdSanctum, guards, JSON responses
Policiespolicies.mdLaravel Policy integration
Query Scopesquery-scopes.md
User::role()
,
User::permission()
Eventsevents.mdAudit logging, notifications
主题参考文档适用场景
API使用api-usage.mdSanctum集成、看守器配置、JSON响应处理
策略集成policies.mdLaravel Policy集成
查询作用域query-scopes.md
User::role()
User::permission()
方法使用
事件events.md审计日志、通知触发

Operations & Quality

运维与质量

TopicReferenceWhen to consult
Cachecache.mdPerformance, debugging
CLIartisan-commands.mdArtisan commands
Testingtesting.mdTests, factories, setup
Performanceperformance.mdOptimization, N+1, caching

主题参考文档适用场景
缓存管理cache.md性能优化、问题排查
CLI命令artisan-commands.mdArtisan命令使用
测试testing.md测试用例编写、工厂配置、环境初始化
性能优化performance.md优化方案、N+1问题解决、缓存配置

Templates (Code Examples)

模板(代码示例)

Setup & Seeding

配置与数据填充

TemplatePurpose
UserModel.php.mdUser model with HasRoles trait
RoleSeeder.php.mdBasic role seeding
PermissionSeeder.php.mdPermission creation seeder
WildcardSeeder.php.mdHierarchical permissions
模板用途
UserModel.php.md集成HasRoles trait的用户模型
RoleSeeder.php.md基础角色填充脚本
PermissionSeeder.php.md权限创建填充脚本
WildcardSeeder.php.md层级化权限配置脚本

Routes & Middleware

路由与中间件

TemplatePurpose
routes-example.mdProtected routes examples
ControllerMiddleware.php.mdMiddleware in controllers
BladeExamples.blade.mdBlade directive examples
模板用途
routes-example.md受保护路由示例
ControllerMiddleware.php.md控制器中使用中间件示例
BladeExamples.blade.mdBlade指令使用示例

Teams & Multi-Tenant

团队与多租户

TemplatePurpose
TeamMiddleware.php.mdMulti-tenant middleware
TeamSeeder.php.mdTeam-scoped roles seeder
TeamModel.php.mdTeam model with boot
模板用途
TeamMiddleware.php.md多租户中间件
TeamSeeder.php.md团队维度角色填充脚本
TeamModel.php.md带启动配置的团队模型

Super Admin & Cache

超级管理员与缓存

TemplatePurpose
SuperAdminSetup.php.mdGate::before bypass
CacheConfig.php.mdCache configuration
DeployScript.sh.mdCI/CD cache management
模板用途
SuperAdminSetup.php.mdGate::before权限绕过配置
CacheConfig.php.md缓存配置
DeployScript.sh.mdCI/CD流程中的缓存管理

API Integration

API集成

TemplatePurpose
ApiPermissionSetup.php.mdAPI guard + Sanctum
ApiExceptionHandler.php.mdJSON error responses
ApiUserResource.php.mdUser resource with permissions
模板用途
ApiPermissionSetup.php.mdAPI看守器+Sanctum配置
ApiExceptionHandler.php.mdJSON错误响应处理
ApiUserResource.php.md携带权限信息的用户资源类

Policies & Events

策略与事件

TemplatePurpose
PostPolicy.php.mdPolicy with Spatie integration
PermissionEventListener.php.mdAudit event listeners
UserQueryExamples.php.mdQuery scope examples
PermissionAudit.php.mdAudit service
模板用途
PostPolicy.php.md集成Spatie的Policy示例
PermissionEventListener.php.md审计事件监听器
UserQueryExamples.php.md查询作用域使用示例
PermissionAudit.php.md审计服务实现

Testing

测试

TemplatePurpose
PermissionTest.php.mdPest & PHPUnit tests
UserFactory.php.mdFactory with permission states
模板用途
PermissionTest.php.mdPest & PHPUnit测试用例
UserFactory.php.md带权限状态的用户工厂

Custom Models

自定义模型

TemplatePurpose
CustomRole.php.mdExtended Role model
CustomPermission.php.mdExtended Permission model
UUIDMigration.php.mdUUID tables migration
SetupPermissions.php.mdCustom artisan command

模板用途
CustomRole.php.md扩展后的Role模型
CustomPermission.php.md扩展后的Permission模型
UUIDMigration.php.mdUUID表迁移文件
SetupPermissions.php.md自定义Artisan命令

Quick Reference

快速参考

Assign Role

分配角色

php
$user->assignRole('admin');
php
$user->assignRole('admin');

Check Permission

权限校验

php
$user->can('edit articles');
php
$user->can('edit articles');

Middleware (Web)

中间件(Web端)

php
Route::middleware(['role:admin'])->group(fn () => ...);
php
Route::middleware(['role:admin'])->group(fn () => ...);

Middleware (API)

中间件(API端)

php
Route::middleware(['auth:sanctum', 'permission:edit,api'])->group(fn () => ...);
php
Route::middleware(['auth:sanctum', 'permission:edit,api'])->group(fn () => ...);

Blade

Blade模板

blade
@role('admin') ... @endrole
@can('edit articles') ... @endcan
blade
@role('admin') ... @endrole
@can('edit articles') ... @endcan

Query Scopes

查询作用域

php
User::role('admin')->get();
User::permission('edit articles')->get();
php
User::role('admin')->get();
User::permission('edit articles')->get();

Teams

团队权限

php
setPermissionsTeamId($team->id);
php
setPermissionsTeamId($team->id);

Wildcards

通配符权限

php
$role->givePermissionTo('articles.*');
php
$role->givePermissionTo('articles.*');

Super Admin

超级管理员

php
Gate::before(fn ($user, $ability) =>
    $user->hasRole('Super-Admin') ? true : null
);
php
Gate::before(fn ($user, $ability) =>
    $user->hasRole('Super-Admin') ? true : null
);

Testing

测试配置

php
beforeEach(fn () => app(PermissionRegistrar::class)->forgetCachedPermissions());

php
beforeEach(fn () => app(PermissionRegistrar::class)->forgetCachedPermissions());

Feature Matrix

功能矩阵

FeatureStatusReference
Basic RBACspatie-permission.md
Middlewaremiddleware.md
Blade Directivesblade-directives.md
Multi-Guard (web/api)middleware.md, api-usage.md
Teams (Multi-Tenant)teams.md
Wildcard Permissionswildcard-permissions.md
Super Adminsuper-admin.md
Cache Managementcache.md
Direct vs Role Permsdirect-permissions.md
Artisan Commandsartisan-commands.md
UUID Supportcustom-models.md
Custom Modelscustom-models.md
Events (v6.15.0+)events.md
Query Scopesquery-scopes.md
Policy Integrationpolicies.md
API / Sanctumapi-usage.md
Testingtesting.md
Performanceperformance.md
功能支持状态参考文档
基础RBACspatie-permission.md
中间件middleware.md
Blade指令blade-directives.md
多看守器(web/api)middleware.md, api-usage.md
团队权限(多租户)teams.md
通配符权限wildcard-permissions.md
超级管理员super-admin.md
缓存管理cache.md
直接权限/角色权限direct-permissions.md
Artisan命令artisan-commands.md
UUID支持custom-models.md
自定义模型custom-models.md
事件(v6.15.0+)events.md
查询作用域query-scopes.md
Policy集成policies.md
API/Sanctum集成api-usage.md
测试支持testing.md
性能优化performance.md