summaryrefslogtreecommitdiffstats
path: root/acf/model/node.lua
diff options
context:
space:
mode:
Diffstat (limited to 'acf/model/node.lua')
-rw-r--r--acf/model/node.lua13
1 files changed, 13 insertions, 0 deletions
diff --git a/acf/model/node.lua b/acf/model/node.lua
index 3960b90..09e3d69 100644
--- a/acf/model/node.lua
+++ b/acf/model/node.lua
@@ -57,6 +57,18 @@ function TreeNode:init(context)
function mt.__index(t, k) return mt.get(k) end
function mt.__newindex(t, k, v) mt.set(k, v) end
+ function mt.has_permission(user, permission)
+ local p = permission..mt.path
+ if mt.txn:search('/auth/permissions')[p] then
+ return user:check_permission(p)
+ end
+
+ if ({create=true, delete=true})[permission] then
+ permission = 'modify'
+ end
+ return has_permission(mt.parent, user, permission)
+ end
+
mt.txn.validable[mt.path] = mt.addr
end
@@ -117,6 +129,7 @@ local function meta_func(attr)
end
addr = meta_func('addr')
+has_permission = meta_func('has_permission')
members = meta_func('members')
meta = meta_func('meta')
mmeta = meta_func('mmeta')