@lcap/nasl
Version:
NetEase Application Specific Language
45 lines • 1.96 kB
JavaScript
;
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