mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-11-10 21:10:50 +08:00
docs(skills): 技能文档更新为全局权限判定协议
This commit is contained in:
@@ -82,27 +82,25 @@ cols: [[
|
||||
|
||||
完整 searchOp 操作符表见 [ulthon-admin-table](./ulthon-admin-table/SKILL.md) 第七章。
|
||||
|
||||
### 1.4 按钮显隐:`data-auth-*`(按权限节点)
|
||||
### 1.4 按钮显隐:UA_AUTH 全局权限判定
|
||||
|
||||
权限按钮由两处配合控制:
|
||||
按钮显隐由全局权限载荷决定,index.html 纯结构零权限声明:
|
||||
|
||||
1. **HTML 写入权限标记**:表格容器上以 `data-auth-{动作}="{:auth('控制器/动作')}"` 形式声明每个动作的权限值(1 有权限 / 0 无)
|
||||
- 实测:`extend/base/admin/view/system/admin/index.html:3`:
|
||||
```html
|
||||
<table id="currentTable" ...
|
||||
data-auth-add="{:auth('system.admin/add')}"
|
||||
data-auth-edit="{:auth('system.admin/edit')}"
|
||||
data-auth-delete="{:auth('system.admin/delete')}"
|
||||
data-auth-password="{:auth('system.admin/password')}"
|
||||
data-auth-modify="{:auth('system.admin/modify')}"
|
||||
lay-filter="currentTable">
|
||||
```
|
||||
- `{:auth(...)}` 是模板函数,返回当前登录账号对该权限节点的布尔判定
|
||||
2. **JS 按 auth 匹配显隐**:cols/toolbar 里的按钮对象带 `auth: '{动作}'`,框架读取对应 `data-auth-{动作}` 值决定渲染与否
|
||||
- 实测:`system/admin/index.js`(toolbar 默认含 add;操作列含 `password` 自定义按钮 + edit + delete)
|
||||
1. **layout 注入全局载荷**:页面加载时服务端一次性注入 `window.UA_AUTH = {all, controller, nodes}`(`all`=超管标记;`controller`=当前控制器节点名;`nodes`=允许集 `{'控制器': ['动作', ...]}`,超管 `all:true` 时 nodes 为空数组)
|
||||
- 实测:`extend/base/admin/view/layout/default.html`(内联 script,与 window.CONFIG 同级)
|
||||
- 同体 JSON 模式(get_page_data)不携带该载荷,仅在页面 HTML 中存在
|
||||
2. **ua.auth(node) 全局判定**:按钮对象带 `auth` 值,框架经 `ua.checkAuth` 依序判定:`'1'` 恒显 → `CONFIG.IS_SUPER_ADMIN` → `ua.auth(node)` → `data-auth-{node}` 属性回退(仅旧页面)
|
||||
- 短名(不含 `/`)自动补 `UA_AUTH.controller` 前缀;全节点逐字匹配,动作段大小写敏感(如 `system.host/setMaster` 禁止写成 `set-master`)
|
||||
- 默认值:`operat.auth = operat.auth || 'add'`(`admin-table.js:1105`)——未写 `auth` 的按钮按 `add` 节点判定
|
||||
|
||||
> 验证口诀:**`auth: 'X'`**(JS)必须能在表格容器找到对应的 **`data-auth-X`**(HTML),且该值=1,按钮才会出现。节点路径必须和控制器 `@NodeAnnotation` 注解一致。
|
||||
**QA 校验口径**:
|
||||
|
||||
- 页面源码断言 `window.UA_AUTH` 存在且形状正确(`{all, controller, nodes}` 三键齐全)
|
||||
- 按钮显隐对应用户允许集:允许集内的按钮出现,不在允许集的消失,超管全显
|
||||
- 未注册动作按钮前端保守隐藏(载荷无 default_pass);`default_auth_check=true` 部署下后端仍按真实规则放行,属已知差异,以前后端核对为准
|
||||
- `data-auth-*` HTML 属性是下游旧页面的回退通道,新协议页面无此声明
|
||||
|
||||
> 验证口诀:按钮节点在 `UA_AUTH.nodes` 允许集内则显示,不在则隐藏(超管恒显)。节点路径必须和控制器 `@NodeAnnotation` 注解逐字一致(动作段大小写敏感)。
|
||||
|
||||
### 1.5 按钮显隐:`_if`(按数据状态)
|
||||
|
||||
@@ -179,7 +177,7 @@ php think tools:http:call --url="/admin/system.admin/index?get_page_data=1" --me
|
||||
- 用智能体自带浏览器能力(Playwright MCP / agent-browser)打开页面(需登录态),逐项核对:
|
||||
1. 表格表头/列按 cols 渲染(字段、标题、关联字段显示正确)
|
||||
2. 搜索区下拉选项 = Page Data 模式里 `select_list_*` 的内容(对照步骤 3 结果)
|
||||
3. 工具栏按钮:`data-auth-X=1` 的按钮出现、`=0` 的消失;`auth: 'X'`(JS)与 `data-auth-X`(HTML)一一对应
|
||||
3. 工具栏按钮:显隐与用户允许集一致(`window.UA_AUTH`),有权限的出现、无权限的消失;旧页面回退通道才存在 `data-auth` 属性
|
||||
4. 操作列按钮:`_if` 条件成立才出现
|
||||
|
||||
### 步骤 5 — 搜索提交验证(网络抓包)
|
||||
@@ -287,8 +285,8 @@ visual-qa 技能(视觉对比 / 回归断言)
|
||||
| `#data-brage` 隐藏元素 | `extend/base/admin/view/layout/default.html` |
|
||||
| `data_brage` assign | `extend/base/common/controller/AdminControllerBase.php:273` |
|
||||
| 后端 assign `select_list_*` | `extend/base/admin/controller/system/HostBase.php` |
|
||||
| `data-auth-{动作}` HTML 标记 | `extend/base/admin/view/system/admin/index.html:3` |
|
||||
| `data-auth-set-master` 跨控制器权限示例 | `extend/base/admin/view/system/host/index.html:5` |
|
||||
| `window.UA_AUTH` 载荷注入(layout 内联) | `extend/base/admin/view/layout/default.html` |
|
||||
| set-master 按钮全节点写法(勘正:旧 `data-auth-set-master` 属性是"自定义键/驼峰动作段"样例而非跨控制器样例,auth() 参数与本页同控制器;属性已随新协议清理,JS 现写全节点) | `extend/base/admin/view/system/host/index.js:33` |
|
||||
| toolbar/auth(默认 add) | `extend/base/admin/view/system/admin/index.js` |
|
||||
| 操作列 auth(password 自定义按钮) | `extend/base/admin/view/system/admin/index.js:24-31` |
|
||||
| `operat.auth` 默认 'add' | `admin-table.js:1105` |
|
||||
@@ -305,7 +303,7 @@ visual-qa 技能(视觉对比 / 回归断言)
|
||||
- [ulthon-page-api-dual-mode](./ulthon-page-api-dual-mode/SKILL.md):页面/接口同体的触发条件与机制(本技能 1.6 节的依据)
|
||||
- [ulthon-tools-http-call](./ulthon-tools-http-call/SKILL.md):CLI HTTP 调用工具用法(本技能三模式的执行工具)
|
||||
- [ulthon-scheme-curd-workflow](./ulthon-scheme-curd-workflow/SKILL.md):标准开发流程,本技能是其「功能验证」环节的页面级细则
|
||||
- [ulthon-permission-cli](./ulthon-permission-cli/SKILL.md):`data-auth-*` / `auth` 注解节点对不上时,用它核对节点
|
||||
- [ulthon-permission-cli](./ulthon-permission-cli/SKILL.md):按钮 auth 值与注解注册节点对不上时,用它核对节点
|
||||
- `playwright` / `visual-qa`(内置技能):前端浏览器验证与视觉对比
|
||||
|
||||
### 5.3 计划假设修正记录
|
||||
|
||||
Reference in New Issue
Block a user