summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--modules/luci-base/ucode/dispatcher.uc15
1 files changed, 15 insertions, 0 deletions
diff --git a/modules/luci-base/ucode/dispatcher.uc b/modules/luci-base/ucode/dispatcher.uc
index 805abc4ce0..86cab9b88f 100644
--- a/modules/luci-base/ucode/dispatcher.uc
+++ b/modules/luci-base/ucode/dispatcher.uc
@@ -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;
}