3-权限策略
概览
目录:doc/product/financial/policy
该模块将发票相关实体的访问控制策略结构化为 JSON,用于集中管理对象级、字段级与行级权限。
- 资源权限策略:
policy/*.json(例如policy/fin_invoices.json)
发票实体权限策略:policy/fin_invoices.json
文件:policy/fin_invoices.json
该策略以实体 fin_invoices 为粒度,对对象级、字段级与行级访问进行集中控制,区分 admin 与 finance 等角色。
完整 JSON:
{
"resourceType": "entity",
"resourceId": "",
"resourceName": "fin_invoices",
"description": "i18n:policy.fin_invoices.description",
"objectLevelPolicy": "{\"actions\":{\"read\":{\"allow\":[\"role:admin\",\"role:finance\"]},\"write\":{\"allow\":[\"role:admin\",\"role:finance\"]}}}",
"columnLevelPolicy": "{\"actions\":{\"read\":{\"roles\":{\"admin\":{\"allowedColumns\":[\"*\"]},\"finance\":{\"allowedColumns\":[\"*\"]}}},\"write\":{\"roles\":{\"admin\":{\"allowedColumns\":[\"*\"]},\"finance\":{\"allowedColumns\":[\"*\"]}}}}}",
"rowLevelPolicy": "{\"actions\":{\"read\":{\"roles\":{\"admin\":{\"predicate\":{\"type\":\"comparison\",\"op\":\"is_not_null\",\"field\":\"id\"}},\"finance\":{\"predicate\":{\"type\":\"comparison\",\"op\":\"is_not_null\",\"field\":\"id\"}}}}}}",
"isActive": true,
"priority": 100
}
在初始化脚本 doc/product/financial/init/init.py 中,init_policies 会批量读取上述 JSON,并通过元数据服务接口完成权限策略的落地。