summaryrefslogtreecommitdiffstats
path: root/aconf/model/aaa.lua
diff options
context:
space:
mode:
Diffstat (limited to 'aconf/model/aaa.lua')
-rw-r--r--aconf/model/aaa.lua19
1 files changed, 12 insertions, 7 deletions
diff --git a/aconf/model/aaa.lua b/aconf/model/aaa.lua
index 3f62ef0..982e5b3 100644
--- a/aconf/model/aaa.lua
+++ b/aconf/model/aaa.lua
@@ -1,5 +1,5 @@
--[[
-Copyright (c) 2012-2015 Kaarle Ritvanen
+Copyright (c) 2012-2016 Kaarle Ritvanen
See LICENSE file for license details
--]]
@@ -56,14 +56,19 @@ function User:check_password(password)
end
function User:check_permission(permission)
- assert(self:fetch('/aaa/permissions')[permission])
-
- for _, role in node.pairs(self.roles, true) do
- for _, p in node.pairs(role.permissions, true) do
- if p == permission then return true end
+ local mt = getmetatable(self)
+ if not mt.permissions then
+ mt.permissions = {}
+ for _, p in pairs(self:fetch('../../permissions')) do
+ mt.permissions[p] = false
+ end
+ for _, role in node.pairs(self.roles, true) do
+ for _, p in node.pairs(role.permissions, true) do
+ mt.permissions[p] = true
+ end
end
end
- return false
+ return mt.permissions[permission]
end