luci-base: dispatcher.uc: apply ACLs to menu tree JSON
Add menu tree annotations for node readonly and dependency satisfied state
in order to ensure that unreachable menu nodes are hidden from view.
Fixes: ded8ccf93e
("luci-base-ucode: add initial ucode based LuCI runtime")
Ref: https://forum.openwrt.org/t/x/141426/10
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
d967bbaa92
commit
c99602e4ac
1 changed files with 15 additions and 0 deletions
|
@ -423,9 +423,24 @@ function build_pagetree() {
|
|||
return tree;
|
||||
}
|
||||
|
||||
function apply_tree_acls(node, acl) {
|
||||
for (let name, spec in node?.children)
|
||||
apply_tree_acls(spec, acl);
|
||||
|
||||
if (node?.depends?.acl) {
|
||||
switch (check_acl_depends(node.depends.acl, acl["access-group"])) {
|
||||
case null: node.satisfied = false; break;
|
||||
case false: node.readonly = true; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function menu_json(acl) {
|
||||
tree ??= build_pagetree();
|
||||
|
||||
if (acl)
|
||||
apply_tree_acls(tree, acl);
|
||||
|
||||
return tree;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue