summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--aconf/model/node.lua24
1 files changed, 7 insertions, 17 deletions
diff --git a/aconf/model/node.lua b/aconf/model/node.lua
index ccbb418..7296446 100644
--- a/aconf/model/node.lua
+++ b/aconf/model/node.lua
@@ -184,33 +184,23 @@ function M.TreeNode:init(context, params)
function mt.search(path) return mt._search(pth.split(path), '') end
- local permissions = {}
-
function mt._has_permission(permission) end
-- TODO audit trail
function mt.has_permission(permission)
if mt.privileged then return true end
- local name = permission..mt.path
- local res = permissions[name]
+ local user = mt.txn.user
+ local res = user.superuser or mt._has_permission(permission)
if res ~= nil then return res end
- local user = mt.txn.user
- res = user.superuser or mt._has_permission(permission)
+ res = mt.txn.user:check_permission(permission..mt.path)
+ if res ~= nil then return res end
- if res == nil then
- res = mt.txn.user:check_permission(name)
- if res == nil then
- if ({create=true, delete=true})[permission] then
- permission = 'modify'
- end
- res = getmetatable(mt.parent).has_permission(permission)
- end
+ if ({create=true, delete=true})[permission] then
+ permission = 'modify'
end
-
- permissions[name] = res
- return res
+ return getmetatable(mt.parent).has_permission(permission)
end
function mt.check_permission(permission)