UNPKG

@lcap/nasl

Version:

NetEase Application Specific Language

45 lines 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isViewPermission = void 0; const types_1 = require("../types"); const is_element_permission_1 = require("./is-element-permission"); exports.isViewPermission = { name: 'is-view-permission', afterInstruct({ path, object, oldObject, action }, { app }) { if (!/views\[(\d+|name[^\]]+)\](\.children\[(\d+|name[^\]]+)\])?$/.test(path)) { return types_1.RuleResult.UnMatch; } if (action === 'update') { // 变更这三者,发后端 if ('auth' in object || 'bindRoles' in object || 'authDescription' in object) { return types_1.RuleResult.Backend; } // 页面设置了权限,此时更改页面名称,需要发后端 if ('name' in object) { // 此时 nasl 已经变更了,只是还未发到后端,所以需要把路径改为新的 const newNaslPath = path.replace(`[name=${oldObject?.name}]`, `[name=${object?.name}]`); const viewNode = app.findNodeByPath(newNaslPath); if (viewNode.auth) { return types_1.RuleResult.Backend; } } return types_1.RuleResult.Frontend; } else { // 添加或者删除时,只要有 auth 权限,就要发后端 if ((object ?? oldObject).auth === true) { return types_1.RuleResult.Backend; } // 子元素中包含有权限组件 else if ((0, is_element_permission_1.hasAuthElement)(object, path) || (0, is_element_permission_1.hasAuthElement)(oldObject, path)) { return types_1.RuleResult.Backend; } else { return types_1.RuleResult.Frontend; } } }, }; //# sourceMappingURL=is-view-permission.js.map