summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/Makefile1
-rw-r--r--app/acf-util/acf-util.roles4
-rw-r--r--app/acf-util/roles-editrole-html.lsp62
-rw-r--r--app/acf-util/roles-model.lua7
-rw-r--r--app/acf-util/roles-viewroles-html.lsp5
5 files changed, 72 insertions, 7 deletions
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 @@
<H1><%= form.label %></H1>
<%
- 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("<DL>\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("<DT")
+ if myitem.errtxt then
+ myitem.class = "error"
+ io.write(' class="error"')
+ end
+ io.write(">" .. myitem.label .. "</DT>\n")
+ io.write("<DD>")
+ -- 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 .. "<br>\n")
+ end
+ -- Check for values not in options
+ if myitem.errtxt then
+ myitem.class = "error"
+ io.write('<p class="error">\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 .. "<br>\n")
+ end
+ end
+ if myitem.errtxt then
+ io.write('</p>\n')
+ end
+ myitem.name = tempname
+ myitem.value = tempval
+
+ if myitem.descr then io.write('<P CLASS="descr">' .. string.gsub(myitem.descr, "\n", "<BR>") .. "</P>\n") end
+ if myitem.errtxt then io.write('<P CLASS="error">' .. string.gsub(myitem.errtxt, "\n", "<BR>") .. "</P>\n") end
+ io.write("</DD>\n")
+
+ io.write("</DL>\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 %>
<dl>
<% for x,role in pairs(view.value.default_roles.value) do %>
- <dt><img src='/static/tango/16x16/categories/applications-system.png' height='16' width='16'> <%= role %></dt>
+ <dt><img src='/skins/static/tango/16x16/categories/applications-system.png' height='16' width='16'> <%= role %></dt>
<dd>
[<a href='viewroleperms?role=<%= role %>'>View this role</a>]
+ [<a href='editrole?role=<%= role %>&redir=<%= page_info.orig_action %>'>Edit this role</a>]
</dd>
<% end %>
</dl>
@@ -29,7 +30,7 @@
<dl>
<% table.sort(view.value.defined_roles.value) %>
<% for x,role in pairs(view.value.defined_roles.value) do %>
- <dt><img src='/static/tango/16x16/apps/system-users.png' height='16' width='16'> <%= role %></dt>
+ <dt><img src='/skins/static/tango/16x16/apps/system-users.png' height='16' width='16'> <%= role %></dt>
<dd>
[<a href='viewroleperms?role=<%= role %>'>View this role</a>]
[<a href='editrole?role=<%= role %>&redir=<%= page_info.orig_action %>'>Edit this role</a>]