From 43915f5de0ae60da41615a3edacca18cd85dd921 Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Fri, 24 Oct 2008 15:20:36 +0000 Subject: Minor change to roles code and major change to roles. Replaced ALL, CREATE, READ, UPDATE, and DELETE with GUEST, USER, EDITOR, EXPERT, and ADMIN. Changed all roles files and modified some html files to hide options without permissions. Determine default roles from roles files, rather than hard-coded, and added ability to modify default roles by adding permissions. git-svn-id: svn://svn.alpinelinux.org/acf/core/trunk@1563 ab2d0c66-481e-0410-8bed-d214d4d58bed --- app/Makefile | 1 + app/acf-util/acf-util.roles | 4 +++ app/acf-util/roles-editrole-html.lsp | 62 +++++++++++++++++++++++++++++++++-- app/acf-util/roles-model.lua | 7 ++-- app/acf-util/roles-viewroles-html.lsp | 5 +-- 5 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 app/acf-util/acf-util.roles (limited to 'app') diff --git a/app/Makefile b/app/Makefile index b840e75..49f3ec0 100644 --- a/app/Makefile +++ b/app/Makefile @@ -1,6 +1,7 @@ include ../config.mk APP_DIST= \ + acf-util/acf-util.roles \ acf-util/logon-controller.lua \ acf-util/logon-html.lsp \ acf-util/logon-model.lua \ diff --git a/app/acf-util/acf-util.roles b/app/acf-util/acf-util.roles new file mode 100644 index 0000000..b31297c --- /dev/null +++ b/app/acf-util/acf-util.roles @@ -0,0 +1,4 @@ +GUEST=logon:logon,logon:logout,logon:status,welcome:read +USER=password:editme,roles:read +EXPERT= +ADMIN=logon:logon,logon:logout,logon:status,password:editme,password:status,password:edituser,password:newuser,password:deleteuser,roles:read,roles:getpermslist,roles:viewuserroles,roles:viewroleperms,roles:viewroles,roles:editrole,roles:deleterole,roles:newrole,welcome:read,password:status,password:edituser,password:newuser,password:deleteuser,roles:getpermslist,roles:viewuserroles,roles:viewroleperms,roles:viewroles,roles:editrole,roles:deleterole,roles:newrole diff --git a/app/acf-util/roles-editrole-html.lsp b/app/acf-util/roles-editrole-html.lsp index 5f106fc..0a32839 100644 --- a/app/acf-util/roles-editrole-html.lsp +++ b/app/acf-util/roles-editrole-html.lsp @@ -7,11 +7,67 @@

<%= form.label %>

<% - form.action = page_info.script .. page_info.prefix .. page_info.controller .. "/" .. page_info.action + displayformstart(form, page_info) -- If editing existing role, disable role if page_info.action ~= "newrole" then form.value.role.contenteditable = false end - local order = { "role", "permissions" } - displayform(form, order) + io.write("
\n") + displayformitem(form.value.role, "role") + + -- copied this code from viewfunctions so we can disable the default boxes + local myitem = form.value.permissions + myitem.name = "permissions" + io.write("" .. myitem.label .. "\n") + io.write("
") + -- FIXME multiple select doesn't work in haserl, so use series of checkboxes + myitem.class = nil + local tempname = myitem.name + local tempval = myitem.value or {} + local reversedefault = {} + for x,val in ipairs(myitem.default or {}) do + reversedefault[val] = x + end + local reverseval = {} + for x,val in ipairs(tempval) do + reverseval[val] = x + end + local reverseopt = {} + for x,val in ipairs(myitem.option) do + reverseopt[val] = x + myitem.value = val + myitem.checked = reverseval[val] + if reversedefault[val] then myitem.disabled = true else myitem.disabled = nil end + myitem.name = tempname .. "." .. x + io.write(html.form.checkbox(myitem) .. val .. "
\n") + end + -- Check for values not in options + if myitem.errtxt then + myitem.class = "error" + io.write('

\n') + end + for x,val in ipairs(tempval) do + if not reverseopt[val] then + myitem.value = val + myitem.checked = true + io.write(html.form.checkbox(myitem) .. val .. "
\n") + end + end + if myitem.errtxt then + io.write('

\n') + end + myitem.name = tempname + myitem.value = tempval + + if myitem.descr then io.write('

' .. string.gsub(myitem.descr, "\n", "
") .. "

\n") end + if myitem.errtxt then io.write('

' .. string.gsub(myitem.errtxt, "\n", "
") .. "

\n") end + io.write("
\n") + + io.write("
\n") + displayformend(form) %> diff --git a/app/acf-util/roles-model.lua b/app/acf-util/roles-model.lua index bdfe20d..79c1b14 100644 --- a/app/acf-util/roles-model.lua +++ b/app/acf-util/roles-model.lua @@ -58,10 +58,13 @@ end getpermissions = function(self, role) local my_perms = {} + local default_perms = {} if role then - tmp, my_perms = roles.get_role_perm(self, role) + local tmp + tmp, my_perms, default_perms = roles.get_role_perm(self, role) my_perms = my_perms or {} + default_perms = default_perms or {} else role = "" end @@ -69,7 +72,7 @@ getpermissions = function(self, role) 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 permissions_cfe = cfe({ type="multi", value=my_perms, option=all_perms, label="Role permissions", default=default_perms }) local role_cfe = cfe({ value=role, label="Role" }) return cfe({ type="table", value={role=role_cfe, permissions=permissions_cfe} }) diff --git a/app/acf-util/roles-viewroles-html.lsp b/app/acf-util/roles-viewroles-html.lsp index 8b9a10f..0334499 100644 --- a/app/acf-util/roles-viewroles-html.lsp +++ b/app/acf-util/roles-viewroles-html.lsp @@ -18,9 +18,10 @@ <% if view.value.default_roles then %>
<% for x,role in pairs(view.value.default_roles.value) do %> -
<%= role %>
+
<%= role %>
[View this role] + [Edit this role]
<% end %>
@@ -29,7 +30,7 @@
<% table.sort(view.value.defined_roles.value) %> <% for x,role in pairs(view.value.defined_roles.value) do %> -
<%= role %>
+
<%= role %>
[View this role] [Edit this role] -- cgit v1.2.3