summaryrefslogtreecommitdiffstats
path: root/aconf/model/node.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-03-24 18:22:55 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-03-25 09:02:58 +0200
commit791ee0dc06650351e0fd6cf79d6af5056c5c987f (patch)
treef5d024d9d7dc610414d9642c523576a7f90057cb /aconf/model/node.lua
parentce083b4fd25ebffca53e59413a13136a5bd59b0b (diff)
downloadaconf-791ee0dc06650351e0fd6cf79d6af5056c5c987f.tar.bz2
aconf-791ee0dc06650351e0fd6cf79d6af5056c5c987f.tar.xz
model: allow fallback to default permission checking implementation
Diffstat (limited to 'aconf/model/node.lua')
-rw-r--r--aconf/model/node.lua18
1 files changed, 12 insertions, 6 deletions
diff --git a/aconf/model/node.lua b/aconf/model/node.lua
index c45196a..fe816e8 100644
--- a/aconf/model/node.lua
+++ b/aconf/model/node.lua
@@ -129,6 +129,8 @@ function M.TreeNode:init(context, params)
local permissions = {}
+ function mt._has_permission(permission) end
+
function mt.has_permission(permission)
if mt.privileged then return true end
@@ -136,13 +138,17 @@ function M.TreeNode:init(context, params)
local res = permissions[name]
if res ~= nil then return res end
- if getmetatable(mt.escalate).fetch('/auth/permissions')[name] then
- res = mt.txn.user:check_permission(name)
- else
- if ({create=true, delete=true})[permission] then
- permission = 'modify'
+ res = mt._has_permission(permission)
+
+ if res == nil then
+ if getmetatable(mt.escalate).fetch('/auth/permissions')[name] then
+ res = mt.txn.user:check_permission(name)
+ else
+ if ({create=true, delete=true})[permission] then
+ permission = 'modify'
+ end
+ res = getmetatable(mt.parent).has_permission(permission)
end
- res = getmetatable(mt.parent).has_permission(permission)
end
permissions[name] = res