Skip to content

Permission 权限

DuxLite 权限管理系统的核心类定义和 API 规格说明。

Register 类

命名空间: Core\Permission\Register

说明: 权限注册器,用于管理不同应用的权限配置。

属性

php
public array $app = []
  • 说明: 存储权限应用配置的数组

方法

php
public function set(string $name, Permission $permission): void
  • 参数:
    • $name - 权限应用名称
    • $permission - 权限实例
  • 返回: void
  • 说明: 设置权限应用配置
php
public function get(string $name): Permission
  • 参数: $name - 权限应用名称
  • 返回: Permission - 权限实例
  • 异常: Exception - 权限应用不存在时抛出
  • 说明: 获取权限应用配置

Permission 类

命名空间: Core\Permission\Permission

说明: 权限管理核心类,用于定义权限结构。

属性

php
private array $data = []
  • 说明: 权限数据数组
php
private string $pattern
  • 说明: 权限模式字符串
php
private string $app = ''
  • 说明: 应用名称

方法

php
public function __construct(string $pattern = "")
  • 参数: $pattern - 权限模式(可选)
  • 说明: 构造权限实例
php
public function setApp(string $app): void
  • 参数: $app - 应用名称
  • 返回: void
  • 说明: 设置权限所属应用
php
public function group(string $name): PermissionGroup
  • 参数: $name - 权限组名称
  • 返回: PermissionGroup - 权限组实例
  • 说明: 创建权限组
php
public function get(): array
  • 返回: array - 格式化的权限数据
  • 说明: 获取权限配置数据
php
public function getData(): array
  • 返回: array - 原始权限数据
  • 说明: 获取原始权限数据

PermissionGroup 类

命名空间: Core\Permission\PermissionGroup

说明: 权限组管理类,用于组织权限项。

方法

php
public function __construct(string $app, string $name, string $pattern)
  • 参数:
    • $app - 应用名称
    • $name - 权限组名称
    • $pattern - 权限模式
  • 说明: 构造权限组实例
php
public function add(string $name, string $label, string $route = ''): self
  • 参数:
    • $name - 权限名称
    • $label - 权限标签
    • $route - 关联路由(可选)
  • 返回: self - 当前实例
  • 说明: 添加权限项
php
public function get(): array
  • 返回: array - 权限组数据
  • 说明: 获取权限组配置
php
public function getData(): array
  • 返回: array - 权限项数据
  • 说明: 获取权限项数据

Can 类

命名空间: Core\Permission\Can

说明: 权限检查工具类。

方法

php
public static function check(string $permission, mixed $user = null): bool
  • 参数:
    • $permission - 权限标识符
    • $user - 用户实例(可选)
  • 返回: bool - 是否有权限
  • 说明: 检查用户是否具有指定权限

PermissionMiddleware 类

命名空间: Core\Permission\PermissionMiddleware

说明: 权限检查中间件。

方法

php
public function __construct(string $permission, ?string $model = null)
  • 参数:
    • $permission - 权限标识符
    • $model - 关联模型(可选)
  • 说明: 构造权限中间件
php
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
  • 参数:
    • $request - 请求对象
    • $handler - 请求处理器
  • 返回: ResponseInterface - 响应对象
  • 异常: ExceptionBusiness - 权限不足时抛出
  • 说明: 处理权限检查

PermissionCommand 类

命名空间: Core\Permission\PermissionCommand

说明: 权限管理命令行工具。

方法

php
public function list(): void
  • 返回: void
  • 说明: 列出所有权限配置
php
public function sync(): void
  • 返回: void
  • 说明: 同步权限配置到数据库

使用示例

php
// 定义权限
$permission = new Permission();

$userGroup = $permission->group('用户管理');
$userGroup->add('user.list', '用户列表', 'admin.user.index');
$userGroup->add('user.create', '创建用户', 'admin.user.create');
$userGroup->add('user.edit', '编辑用户', 'admin.user.edit');
$userGroup->add('user.delete', '删除用户', 'admin.user.delete');

$orderGroup = $permission->group('订单管理');
$orderGroup->add('order.list', '订单列表', 'admin.order.index');
$orderGroup->add('order.view', '查看订单', 'admin.order.show');
$orderGroup->add('order.edit', '编辑订单', 'admin.order.edit');

// 注册权限
App::permission()->set('admin', $permission);

// 权限检查
if (Can::check('user.create')) {
    // 有创建用户权限
}

// 中间件权限检查
$app->get('/admin/users', UserController::class . ':index')
   ->add(new PermissionMiddleware('user.list'));

权限配置结构

权限应用

字段类型说明
namestring应用名称
groupsarray权限组列表

权限组

字段类型说明
namestring权限组名称
permissionsarray权限项列表

权限项

字段类型说明
namestring权限标识符
labelstring权限显示名称
routestring关联路由名称

权限中间件

支持的权限类型

类型说明示例
基础权限简单的权限检查user.create
模型权限基于模型的权限检查user.edit:User
动态权限运行时动态权限检查order.view:own

基于 MIT 许可证发布