From 2c343a41e917bf00d1f7e03c27248887c9c56121 Mon Sep 17 00:00:00 2001 From: Mika Havela Date: Tue, 19 Feb 2008 16:23:01 +0000 Subject: Saving work for today (password manager controller/view) git-svn-id: svn://svn.alpinelinux.org/acf/core/trunk@755 ab2d0c66-481e-0410-8bed-d214d4d58bed --- app/acf-util/password-controller.lua | 219 +++++++++++++++++++++++++++++++++-- 1 file changed, 211 insertions(+), 8 deletions(-) (limited to 'app/acf-util/password-controller.lua') diff --git a/app/acf-util/password-controller.lua b/app/acf-util/password-controller.lua index c19d6b4..3cbc98a 100755 --- a/app/acf-util/password-controller.lua +++ b/app/acf-util/password-controller.lua @@ -1,5 +1,7 @@ module(..., package.seeall) +auth=require("authenticator-plaintext") + local list_redir = function (self) self.conf.action = "status" self.conf.type = "redir" @@ -13,28 +15,158 @@ mvc.on_load = function(self, parent) end end +local function admin_permission() + if (sessiondata.userinfo) and (sessiondata.userinfo.userid == "alpine") then + return true + else + return false + end +end + +local function config(self,userid) + local config = {} + local userinfo = {} + if (userid) then + userinfo=auth.get_userinfo(self,userid) + else + userinfo.userid = "" + userinfo.username = "" + userinfo.roles = {} + + end + local avail_roles=auth.list_roles() + + config.debug = userid + + config.userid = cfe({ + name="userid", + label="User id", + value=(userinfo.userid or ""), + }) + config.orguserid = cfe({ + name="orguserid", + value=(userinfo.userid or ""), + type="hidden", + }) + + config.username = cfe({ + name="username", + label="User name", + value=userinfo.username, + }) + config.roles = cfe({ + name="roles", + label="Roles", + option=userinfo.roles, + type="select", + size=#avail_roles, + }) + config.password = cfe({ + name="password", + label="Password", + type="passwd", + disabled="yes", + }) + config.password_confirm = cfe({ + name="password_confirm", + label="Password (confirm)", + type="passwd", + disabled="yes", + }) + + config.availableroles = cfe({ + name="availableroles", + label="Available roles", + type="select", + option=avail_roles, + }) + + return config +end + function status(self) - local status=self.model.getstatus(self) + local status = {} + + -- Check for admin persmissions - else redirect to personal options + if not (admin_permission()) then + self.conf.action = "edit_me" + return edit_me(self) + end + + -- Redirect when creating a new account + if (clientdata.cmdnew) then + self.conf.action = "administrator" + self.conf.type = "redir" + + return administrator(self) + end + + --List all users and their userinfo + status.users = {} + local userlist = auth.list_users(self) + for k,v in pairs(userlist) do + local userinfo = auth.get_userinfo(self,v) + status.users[k] = cfe({ + name=v, + label=v, +-- debug=userinfo, + value={ userid=cfe ({ + name="userid", + label="User ID", + value=userinfo.userid, + }), + username=cfe ({ + name="username", + label="User name", + value=userinfo.username, + }), + roles=cfe ({ + name="roles", + label="Roles", + value=table.concat(userinfo.roles," / "), + option=userinfo.roles, + type="select", + }), + }, + + }) + end + + --Create a button for 'New user account' status.cmdnew = cfe ({ name="cmdnew", type="submit", label="Create new account", value="Create", - disabled="yes", +-- disabled="yes", }) return { status=status } end -function edit(self) - local config=self.model.getsettings(self.clientdata.userid) - config.cmdsave = cfe ({ +function administrator(self) + local output = {} + + -- Check for admin persmissions - else redirect to personal options + if not (admin_permission()) then + self.conf.action = "edit_me" + return edit_me(self) + end + + -- Output userinfo + output = config(self,self.clientdata.userid) + + --Clear password-field + output.password.value = "" + + -- Add some buttons + output.cmdsave = cfe ({ name="cmdsave", type="submit", label="Save changes", value="Save", - disabled="yes", +-- disabled="yes", }) - config.cmddelete = cfe ({ + output.cmddelete = cfe ({ name="cmddelete", type="submit", label="Delete this account", @@ -42,6 +174,77 @@ function edit(self) disabled="yes", }) - return { config=config, clientdata=self.clientdata } + return {config=output} end +function edit_me(self) + + --FIXME: Redirect to Welcome or logon if user is not logged on +-- if not ( self.sessiondata.userinfo) then +-- self.conf.action = "" +-- self.conf.type = "redir" +-- end + + -- Output userinfo + local output = config(self,sessiondata.userinfo.userid) + + --Hide roles/cmddelete for current the user + output.roles = nil + output.cmddelete = nil + + --Disable userid + output.userid.disabled = "yes" + + --Add save-button + output.cmdsave = cfe ({ + name="cmdsave", + type="submit", + label="Save changes", + value="Save", + disabled="yes", + }) + + return {config=output} +end + +function save(self) + + --FIXME: Check if user is allowed to save settings + + -- We start changing things based on input + local cmdresult = {} + cmdresult.debug = {} + if (clientdata.cmdsave) then + if (#clientdata.orguserid > 0) then + local variables="username userid" + cmdresult.debugs = self.clientdata.orguserid + for var in string.gmatch(variables, "%S+") do + if (self.clientdata[var]) then + cmdresult[var],cmdresult.debug[var] = auth.change_settings( + self, + self.clientdata.orguserid, + var, self.clientdata[var] + ) + end + end + else + cmdresult["new"],cmdresult.debug["new"] = auth.new_settings( + self, + self.clientdata.userid, + self.clientdata.username, + self.clientdata.password, + self.clientdata.password_confirm ) + end + end + + cmdresult.clientdata = self.clientdata + + return cmdresult +--[[ + --FIXME: Redirect somewhere when changed settings + self.conf.action = "status" + self.conf.type = "redir" + + return status(self) +--]] +end -- cgit v1.2.3