1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
module(..., package.seeall)
local auth=require("authenticator-plaintext")
function create_user(self, userdata)
return update_user(self, userdata, true)
end
function read_user(self, user)
local config = {}
local errtxt
-- Read the user data
local userinfo
if user and (#user > 0) then
userinfo = auth.get_userinfo(self,user)
if not userinfo then
errtxt = "User does not exist"
end
end
userinfo = userinfo or {}
config.userid = cfe({
label="User id",
value=(userinfo.userid or user or ""),
errtxt = errtxt
})
config.username = cfe({
label="Real name",
value=(userinfo.username or ""),
})
config.roles = cfe({
label="Roles",
value=(userinfo.roles or {}),
type="multi",
option=auth.list_roles(),
})
config.password = cfe({
label="Password",
})
config.password_confirm = cfe({
label="Password (confirm)",
})
return cfe({ type="group", value=config, errtxt = errtxt, label="User Config" })
end
function update_user(self, userdata, newuser)
local result
local errormessage = {}
-- Try to write new or update existing data
if newuser == true then
result, errormessage = auth.new_settings(self, userdata.value.userid.value, userdata.value.username.value, userdata.value.password.value, userdata.value.password_confirm.value, userdata.value.roles.value)
if result == false then
userdata.errtxt = "Failed to create new user"
end
else
-- As a special case, settings that don't change are nil
result, errormessage = auth.change_settings(self, userdata.value.userid.value, userdata.value.username.value, userdata.value.password.value, userdata.value.password_confirm.value, userdata.value.roles.value)
if result == false then
userdata.errtxt = "Failed to save changes"
end
-- We can't return any nil values, so set then
local olduserdata = read_user(self, userdata.value.userid.value)
for name,value in pairs(userdata.value) do
if value.value == nil then
value.value = olduserdata.value[name].value
end
end
end
userdata.value.password.value = ""
userdata.value.password_confirm.value = ""
if result == false then
-- now, copy in the errors
for name,value in pairs(userdata.value) do
value.errtxt = errormessage[name]
end
end
return userdata
end
function get_users(self)
--List all users and their userinfo
local users = {}
local userlist = auth.list_users(self)
for x,user in pairs(userlist) do
local userinfo = auth.get_userinfo(self,user)
users[user] = cfe({
type="group",
label=user,
value={ userid=cfe ({
label="User ID",
value=userinfo.userid,
}),
username=cfe ({
label="Real name",
value=userinfo.username,
}),
roles=cfe ({
label="Roles",
value=userinfo.roles,
option=auth.list_roles(),
type="multi",
}),
},
})
end
return cfe({ type="group", value=users, label="User Configs" })
end
function delete_user(self, userid)
auth.delete_user(self, userid)
end
|