From 44e40d96e65bb090dd20550f22d646f57732fdf4 Mon Sep 17 00:00:00 2001 From: Luke Miller <millerluke1364@gmail.com> Date: Wed, 21 Apr 2021 16:17:41 -0400 Subject: [PATCH] added support for making requests to an org (first step of processes) --- modpol/orgs/orgs.lua | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/modpol/orgs/orgs.lua b/modpol/orgs/orgs.lua index fbc6668..52a8dee 100644 --- a/modpol/orgs/orgs.lua +++ b/modpol/orgs/orgs.lua @@ -13,12 +13,20 @@ function temp_org() name = nil, policies = {}, processes = {}, + requests = {}, members = {}, parent = nil, children = {} } end +modpol.orgs.request_params = { + add_org = 1, + delete = 0, + add_member = 1, + remove_member = 1 +} + -- ================================================== -- returns org when given its id or name function modpol.orgs.get_org(arg) @@ -249,3 +257,43 @@ function modpol.orgs:list_member() end return str end + +-- =========================== +-- compares to requests to see if they are identical +function modpol.orgs.comp_req(req1, req2) + if req1.type ~= req2.type then + return false + else + for k, v in ipairs(req1.params) do + if v ~= req2.params[k] then + return false + end + end + end + return true +end + +-- ================================ +-- tries to make a request to the org +function modpol.orgs:make_request(request) + -- makes sure the request has the valid number of parameters + local num_params = modpol.orgs.request_params[request.type] + + if num_params == nil then return false end + + for k, v in ipairs(request.params) do + num_params = num_params - 1 + end + if num_params ~= 0 then return false end + + -- checking to see if identical request already exists + for k, v in ipairs(self.requests) do + if self.comp_req(request, v) == true then + return false + end + end + + table.insert(self.requests, request) + return true + +end \ No newline at end of file