diff options
Diffstat (limited to 'app/acf-util/roles-model.lua')
-rw-r--r-- | app/acf-util/roles-model.lua | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/app/acf-util/roles-model.lua b/app/acf-util/roles-model.lua index 4fe3cbf..d02f390 100644 --- a/app/acf-util/roles-model.lua +++ b/app/acf-util/roles-model.lua @@ -48,43 +48,49 @@ view_roles = function() return cfe({ type="group", value={defined_roles=defined_roles_cfe, default_roles=default_roles_cfe} }) end -setpermissions = function(self, role, permissions, newrole) - local errtxt +getpermissions = function(self, role) local my_perms = {} - if permissions then - -- we're changing permissions - 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 - errtxt = "Role already exists" - break - end - end - end - if result==true then - result, errtxt = roles.set_role_perm(role, nil, permissions) - end - my_perms = self.clientdata.permissions + + if role then + tmp, my_perms = roles.get_role_perm(self.conf.appdir, role) + my_perms = my_perms or {} else - if role then - tmp, my_perms = roles.get_role_perm(self.conf.appdir, role) - else - role = "" - end + role = "" end local tmp, all_perms = get_all_permissions(self) table.sort(all_perms) local permissions_cfe = cfe({ type="multi", value=my_perms, option=all_perms, label="Role permissions" }) - local role_cfe = cfe({ value=role, label="Role", errtxt=errtxt }) + local role_cfe = cfe({ value=role, label="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 + + -- 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 + end + end + -- Try to set the value + if result==true then + result, my_perms.value.role.errtxt = roles.set_role_perm(role, nil, permissions) + end + + return my_perms +end + delete_role = function(role) local result, cmdresult = roles.delete_role(role) return cfe({ value=cmdresult }) |