diff options
Diffstat (limited to 'app/acf-util')
-rw-r--r-- | app/acf-util/logon-controller.lua | 9 | ||||
-rw-r--r-- | app/acf-util/password-model.lua | 16 | ||||
-rw-r--r-- | app/acf-util/roles-model.lua | 33 |
3 files changed, 24 insertions, 34 deletions
diff --git a/app/acf-util/logon-controller.lua b/app/acf-util/logon-controller.lua index 2a88528..7bbd522 100644 --- a/app/acf-util/logon-controller.lua +++ b/app/acf-util/logon-controller.lua @@ -24,7 +24,7 @@ end logon = function(self) local userid = cfe({ value=clientdata.userid or "", label="User ID" }) local password = cfe({ label="Password" }) - local redir = cfe({ value=clientdata.redir or "welcome/read", label="" }) + local redir = cfe({ value=clientdata.redir, label="" }) local cmdresult = cfe({ type="form", value={userid=userid, password=password, redir=redir}, label="Logon", option="Logon" }) if clientdata.Logon then local logonredirect = self.sessiondata.logonredirect @@ -38,6 +38,13 @@ logon = function(self) end cmdresult = self:redirect_to_referrer(cmdresult) if logon.value then + if redir.value == "" then + if self.sessiondata.userinfo and self.sessiondata.userinfo.home and self.sessiondata.userinfo.home ~= "" then + redir.value = self.sessiondata.userinfo.home + else + redir.value = "/acf-util/welcome/read" + end + end -- only copy the logonredirect if redirecting to that page if logonredirect and cmdresult.value.redir.value then local prefix, controller, action = self.parse_redir_string(cmdresult.value.redir.value) diff --git a/app/acf-util/password-model.lua b/app/acf-util/password-model.lua index b7e9ebe..e9e0cd6 100644 --- a/app/acf-util/password-model.lua +++ b/app/acf-util/password-model.lua @@ -3,7 +3,7 @@ module(..., package.seeall) require("authenticator") require("roles") -avail_roles, avail_skins = nil +avail_roles, avail_skins, avail_homes = nil local weak_password = function(password) -- If password is too short, return false @@ -19,7 +19,7 @@ end -- validate the settings (ignore password if it's nil) local validate_settings = function(settings) - -- Username, password, roles, and skin are allowed to not exist, just leave the same + -- Username, password, roles, skin, and home are allowed to not exist, just leave the same -- Set errtxt when entering invalid values if (#settings.value.userid.value == 0) then settings.value.userid.errtxt = "You need to enter a valid userid!" end if string.find(settings.value.userid.value, "[^%w_]") then settings.value.userid.errtxt = "Can only contain letters, numbers, and '_'" end @@ -36,6 +36,7 @@ local validate_settings = function(settings) end if settings.value.roles then modelfunctions.validatemulti(settings.value.roles) end if settings.value.skin then modelfunctions.validateselect(settings.value.skin) end + if settings.value.home then modelfunctions.validateselect(settings.value.home) end -- Return false if any errormessages are set for name,value in pairs(settings.value) do @@ -126,12 +127,23 @@ function read_user(self, user) end end + -- Call into ?? controller to get the list of home actions + if not avail_homes then + avail_homes = {""} + local tmp1, tmp2 = roles.get_all_permissions(self) + table.sort(tmp2) + for i,h in ipairs(tmp2) do + avail_homes[#avail_homes+1] = h + end + end + -- Passwords are set to empty string result.username = cfe({ value=userinfo.username or "", label="Real name" }) result.password = cfe({ value="", label="Password" }) result.password_confirm = cfe({ value="", label="Password (confirm)" }) result.roles = cfe({ type="multi", value=userinfo.roles or {}, label="Roles", option=avail_roles or {} }) result.skin = cfe({ type="select", value=userinfo.skin or "", label="Skin", option=avail_skins or {""} }) + result.home = cfe({ type="select", value=userinfo.home or "", label="Home", option=avail_homes or {""} }) return cfe({ type="group", value=result, label="User Config" }) end diff --git a/app/acf-util/roles-model.lua b/app/acf-util/roles-model.lua index e12d49a..cbd9f38 100644 --- a/app/acf-util/roles-model.lua +++ b/app/acf-util/roles-model.lua @@ -5,35 +5,6 @@ require("modelfunctions") require("authenticator") require("roles") -local get_all_permissions = function(self) - -- need to get a list of all the controllers - controllers = roles.get_controllers(self) - local table_perm = {} - local array_perm = {} - for a,b in pairs(controllers) do - if nil == table_perm[b.prefix] then - table_perm[b.prefix] = {} - end - if nil == table_perm[b.prefix][b.sname] then - table_perm[b.prefix][b.sname] = {} - end - local temp = roles.get_controllers_func(self,b) - for x,y in ipairs(temp) do - table_perm[b.prefix][b.sname][y] = {} - array_perm[#array_perm + 1] = b.prefix .. b.sname .. "/" .. y - end - temp = roles.get_controllers_view(self,b) - for x,y in ipairs(temp) do - if not table_perm[b.prefix][b.sname][y] then - table_perm[b.prefix][b.sname][y] = {} - array_perm[#array_perm + 1] = b.prefix .. b.sname .. "/" .. y - end - end - end - - return table_perm, array_perm -end - -- Return roles/permissions for specified user get_user_roles = function(self, userid) local userinfo = authenticator.get_userinfo(self, userid) or {} @@ -49,7 +20,7 @@ end -- Return list of all permissions get_perms_list = function(self) - return cfe({ type="table", value=get_all_permissions(self), label="All Permissions" }) + return cfe({ type="table", value=roles.get_all_permissions(self), label="All Permissions" }) end view_roles = function(self) @@ -73,7 +44,7 @@ getpermissions = function(self, role) role = "" end - local tmp, all_perms = get_all_permissions(self) + local tmp, all_perms = roles.get_all_permissions(self) table.sort(all_perms) local permissions_cfe = cfe({ type="multi", value=my_perms, option=all_perms, label="Role permissions", default=default_perms }) |