diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-03-24 18:22:55 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-03-25 09:02:58 +0200 |
commit | 791ee0dc06650351e0fd6cf79d6af5056c5c987f (patch) | |
tree | f5d024d9d7dc610414d9642c523576a7f90057cb /aconf/model/node.lua | |
parent | ce083b4fd25ebffca53e59413a13136a5bd59b0b (diff) | |
download | aconf-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.lua | 18 |
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 |