资源权限

定义资源后我们可以获取权限对象将一些动态权限进行注册扩展。

权限对象

应用入口中获取注册资源名为 admin 的权限类,建议在 register 方法中获取:

public function register(Bootstrap $app): void
{
    $menu = $app->getPermission()->get("admin");
}

添加权限

获取到权限对象后可添加权限租和权限,权限组只作为唯一分组标识,不作为权限判断。

// 添加权限组
$group = $app->group("test.testGroup");

// 注册权限
$group->add("test.example");

权限描述

权限添加只需要添加权限名,如 test.example 该权限在获取权限时会自动调用语言包中 test.example.name 的内容作为权限描述,如下格式:

权限名.name

权限与菜单

菜单名需要与权限名对应后权限才能控制菜单的显示,如下:

// 注册菜单
$menuGroup->item(name: "test.example", route: "test/example/list", sort: 0);


// 注册权限
$permissionGroup->add("test.example");

权限与前端

每个前端资源有一个唯一 资源名,该资源名需要与路由名一致则可控制前端菜单。

::: code-group

<?php

declare(strict_types=1);

namespace App\Example\Admin;

use Dux\Resources\Action\Resources;
use Dux\Resources\Attribute\Resource;

#[Resource(app: 'admin',  route: '/test/example', name: 'test.example')]    class Page extends Resources
{
...
app.addResources([
    {
        name: 'test.example',         list: 'test/example',
        listComponent: lazyComponent(() => import('../admin/test/list')),
    }
]);

:::