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
|
-- Roles/Group functions
module (..., package.seeall)
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)
rls = cfe({ type="list", value=authenticator.get_userinfo_roles(self, userid).value, label="Roles" })
permissions = cfe({ type="table", value=roles.get_roles_perm(self, rls.value), label="Permissions" })
return cfe({ type="group", value={roles=rls, permissions=permissions} })
end
-- Return permissions for specified role
get_role_perms = function(self, role)
return cfe({ type="table", value=roles.get_role_perm(self, role), label="Permissions" })
end
-- Return list of all permissions
get_perms_list = function(self)
return cfe({ type="table", value=get_all_permissions(self), label="All Permissions" })
end
view_roles = function(self)
local defined_roles, default_roles = roles.list_roles(self)
local defined_roles_cfe=cfe({ type="list", value=defined_roles, label="Locally-defined roles" })
local default_roles_cfe=cfe({ type="list", value=default_roles, label="System-defined roles" })
return cfe({ type="group", value={defined_roles=defined_roles_cfe, default_roles=default_roles_cfe} })
end
getpermissions = function(self, role)
local my_perms = {}
local default_perms = {}
if role then
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
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", default=default_perms })
local role_cfe = cfe({ value=role, label="Role" })
return cfe({ type="table", value={role=role_cfe, permissions=permissions_cfe} })
end
setpermissions = function(self, permissions, newrole)
-- Validate entries and create error strings
local result = true
if newrole then
-- make sure not overwriting role
local defined_roles, default_roles = roles.list_roles(self)
local reverseroles = {}
for i,role in ipairs(defined_roles) do reverseroles[role] = i end
for i,role in ipairs(default_roles) do reverseroles[role] = i end
if reverseroles[permissions.value.role.value] then
result = false
permissions.value.role.errtxt = "Role already exists"
permissions.errtxt = "Failed to create role"
end
end
-- Try to set the value
if result==true then
result, permissions.value.role.errtxt = roles.set_role_perm(self, permissions.value.role.value, nil, permissions.value.permissions.value)
if not result then
permissions.errtxt = "Failed to save role"
end
end
return permissions
end
delete_role = function(self, role)
local result, cmdresult = roles.delete_role(self, role)
return cfe({ value=cmdresult })
end
|