summaryrefslogtreecommitdiffstats
path: root/aconf/model
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2016-04-20 00:45:27 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2016-04-20 00:53:11 +0300
commit936f40ea95a0317082be9bc8e8493e3eeac48b2c (patch)
tree373d4cd5e94510b96753f891f701d58bf071c106 /aconf/model
parent64fb7a6edb00fac497fa9ef58b2b8f49a5f8b4ed (diff)
downloadaconf-936f40ea95a0317082be9bc8e8493e3eeac48b2c.tar.bz2
aconf-936f40ea95a0317082be9bc8e8493e3eeac48b2c.tar.xz
model: remove node-specific permission cachev0.6.1
Diffstat (limited to 'aconf/model')
-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)