diff options
Diffstat (limited to 'app/acf-util/roles-model.lua')
-rw-r--r-- | app/acf-util/roles-model.lua | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/app/acf-util/roles-model.lua b/app/acf-util/roles-model.lua index d02f390..b2db9db 100644 --- a/app/acf-util/roles-model.lua +++ b/app/acf-util/roles-model.lua @@ -1,6 +1,7 @@ -- Roles/Group functions module (..., package.seeall) +require("modelfunctions") auth = require("authenticator-plaintext") require("roles") @@ -67,28 +68,30 @@ getpermissions = function(self, role) return cfe({ type="table", value={role=role_cfe, permissions=permissions_cfe} }) end -setpermissions = function(self, role, permissions, newrole) - local my_perms = getpermissions(self, role) - my_perms.value.permissions.value = permissions - +setpermissions = function(self, permissions, newrole) -- Validate entries and create error strings local result = true if newrole then -- make sure not overwriting role - for x,ro in ipairs(roles.list_roles()) do - if role==ro then - result = false - my_perms.value.role.errtxt = "Role already exists" - break - end + local defined_roles, default_roles = roles.list_roles() + local reverseroles = {} + for i,role in ipairs(defined_roles) do reverseroles[role] = i end + for i,role in ipairs(default_roles) do reverseroles[role] = i end + if reverseroles[permissions.value.role.value] then + result = false + permissions.value.role.errtxt = "Role already exists" + permissions.errtxt = "Failed to create role" end end -- Try to set the value if result==true then - result, my_perms.value.role.errtxt = roles.set_role_perm(role, nil, permissions) + result, permissions.value.role.errtxt = roles.set_role_perm(permissions.value.role.value, nil, permissions.value.permissions.value) + if not result then + permissions.errtxt = "Failed to save role" + end end - return my_perms + return permissions end delete_role = function(role) |