summaryrefslogtreecommitdiffstats
path: root/lib/roles.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lib/roles.lua')
-rw-r--r--lib/roles.lua27
1 files changed, 16 insertions, 11 deletions
diff --git a/lib/roles.lua b/lib/roles.lua
index b90ecea..1ac4ae9 100644
--- a/lib/roles.lua
+++ b/lib/roles.lua
@@ -1,6 +1,6 @@
--this module is for authorization help and group/role management
-
+require ("authenticator")
require ("posix")
require ("fs")
require ("format")
@@ -87,7 +87,7 @@ list_default_roles = function()
return default_roles
end
-list_roles = function()
+list_roles = function(self)
local defined_roles = {}
local reverseroles = {}
for x,role in ipairs(default_roles) do
@@ -106,8 +106,8 @@ list_roles = function()
return defined_roles, default_roles
end
-list_all_roles = function()
- local defined_roles, default_roles = list_roles()
+list_all_roles = function(self)
+ local defined_roles, default_roles = list_roles(self)
for x,role in ipairs(defined_roles) do
default_roles[#default_roles + 1] = role
end
@@ -115,12 +115,12 @@ list_all_roles = function()
end
-- Go through the roles files and determine the permissions for the specified roles
-get_roles_perm = function(startdir,roles)
+get_roles_perm = function(self,roles)
permissions = {}
permissions_array = {}
-- find all of the roles files and add in the master file
- local rolesfiles = get_roles_candidates(startdir)
+ local rolesfiles = get_roles_candidates(self.conf.appdir)
rolesfiles[#rolesfiles + 1] = roles_file
local reverseroles = {}
@@ -154,12 +154,12 @@ get_roles_perm = function(startdir,roles)
end
-- Go through the roles files and determine the permissions for the specified role
-get_role_perm = function(startdir,role)
+get_role_perm = function(self,role)
permissions = {}
permissions_array = {}
-- find all of the roles files and add in the master file
- local rolesfiles = get_roles_candidates(startdir)
+ local rolesfiles = get_roles_candidates(self.conf.appdir)
rolesfiles[#rolesfiles + 1] = roles_file
for x,file in ipairs(rolesfiles) do
@@ -187,7 +187,7 @@ get_role_perm = function(startdir,role)
end
-- Delete a role from role file
-delete_role = function(role)
+delete_role = function(self, role)
for x,ro in ipairs(default_roles) do
if role==ro then
return false, "Cannot delete default roles"
@@ -208,13 +208,18 @@ delete_role = function(role)
if result == true then
fs.write_file(roles_file, table.concat(output,"\n"))
+ -- also need to delete any other roles fields for this role
+ local fields = authenticator.list_rolefields(self) or {}
+ for x,field in ipairs(fields) do
+ authenticator.delete_roleentry(self, field, role)
+ end
end
return result, cmdresult
end
-- Set permissions for a role in role file
-set_role_perm = function(role, permissions, permissions_array)
+set_role_perm = function(self, role, permissions, permissions_array)
if role==nil or role=="" then
return false, "Invalid Role"
end
@@ -238,7 +243,7 @@ set_role_perm = function(role, permissions, permissions_array)
return false, "No permissions set"
end
- delete_role(role)
+ delete_role(self, role)
fs.write_line_file(roles_file, role .. "=" .. table.concat(permissions_array,","))
return true
end