summaryrefslogtreecommitdiffstats
path: root/app/acf-util/password-controller.lua
diff options
context:
space:
mode:
authorMika Havela <mika.havela@gmail.com>2008-02-19 16:23:01 +0000
committerMika Havela <mika.havela@gmail.com>2008-02-19 16:23:01 +0000
commit2c343a41e917bf00d1f7e03c27248887c9c56121 (patch)
tree8d33c82e2d7867e1fb9b5a6338524d3c0dd1b3c0 /app/acf-util/password-controller.lua
parentf67ad7952b1fc9516c78c10e55db6ee4c2051b53 (diff)
downloadacf-core-2c343a41e917bf00d1f7e03c27248887c9c56121.tar.bz2
acf-core-2c343a41e917bf00d1f7e03c27248887c9c56121.tar.xz
Saving work for today (password manager controller/view)
git-svn-id: svn://svn.alpinelinux.org/acf/core/trunk@755 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'app/acf-util/password-controller.lua')
-rwxr-xr-xapp/acf-util/password-controller.lua219
1 files changed, 211 insertions, 8 deletions
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