diff options
Diffstat (limited to 'acf/model/node.lua')
-rw-r--r-- | acf/model/node.lua | 13 |
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') |