This commit is contained in:
sartography-automated-committer 2022-12-22 17:34:46 +00:00
commit 1cb72a12a3
5 changed files with 536 additions and 0 deletions

View File

@ -0,0 +1,9 @@
{
"admin": false,
"description": "",
"display_name": "Site Administration",
"display_order": 0,
"parent_groups": null,
"process_groups": [],
"process_models": []
}

View File

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" xmlns:biodi="http://bpmn.io/schema/dmn/biodi/2.0" id="Definitions_76910d7" name="DRD" namespace="http://camunda.org/schema/1.0/dmn">
<decision id="groups_to_permissions_table" name="Groups to Permissions">
<decisionTable id="decisionTable_1" hitPolicy="COLLECT">
<input id="input_1" biodi:width="150">
<inputExpression id="inputExpression_1" typeRef="string">
<text>"*"</text>
</inputExpression>
</input>
<output id="OutputClause_14rq1xp" name="permission_groups" typeRef="string" />
<output id="output_1" name="permissions" typeRef="string" biodi:width="279" />
<output id="OutputClause_1d0f70s" name="permission_uris" typeRef="string" biodi:width="254" />
<rule id="DecisionRule_13uhk78">
<description>Admins have access to everything.</description>
<inputEntry id="UnaryTests_1yb5tu4">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_00aw971">
<text>"admin"</text>
</outputEntry>
<outputEntry id="LiteralExpression_1drtsn8">
<text>["all"]</text>
</outputEntry>
<outputEntry id="LiteralExpression_13n9min">
<text>"ALL"
</text>
</outputEntry>
</rule>
<rule id="DecisionRule_1ush1di">
<inputEntry id="UnaryTests_0ajhuce">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_0w3207v">
<text>"education"</text>
</outputEntry>
<outputEntry id="LiteralExpression_0mhnzp3">
<text>["create", "read", "update", "delete"]</text>
</outputEntry>
<outputEntry id="LiteralExpression_0t37e9p">
<text>"/process-groups/education:*"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_0kcffrp">
<inputEntry id="UnaryTests_10ga6h2">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_0ujmqk1">
<text>"organization"</text>
</outputEntry>
<outputEntry id="LiteralExpression_09f42eh">
<text>["create", "read", "update", "delete"]</text>
</outputEntry>
<outputEntry id="LiteralExpression_0edy3e8">
<text>"/process-groups/education:*"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_15ava6l">
<inputEntry id="UnaryTests_1d8q18o">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_143ih01">
<text>"Finance Team"</text>
</outputEntry>
<outputEntry id="LiteralExpression_0aaakd4">
<text>["all"]</text>
</outputEntry>
<outputEntry id="LiteralExpression_031h3bx">
<text>"PG:manage-procurement:procurement"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_1ev5071">
<inputEntry id="UnaryTests_0rmdeuf">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_1db9u0f">
<text>"demo"</text>
</outputEntry>
<outputEntry id="LiteralExpression_1tf5fq7">
<text>["start"]</text>
</outputEntry>
<outputEntry id="LiteralExpression_19v58sy">
<text>"PM:manage-revenue-streams:product-revenue-streams:customer-contracts-trade-terms"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_16waes0">
<inputEntry id="UnaryTests_1si0twd">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_03bfkxs">
<text>"demo"</text>
</outputEntry>
<outputEntry id="LiteralExpression_0a2vmfc">
<text>["start"]</text>
</outputEntry>
<outputEntry id="LiteralExpression_1hiq5xs">
<text>"PG:manage-procurement:procurement:core-contributor-invoice-management"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_0ps58js">
<inputEntry id="UnaryTests_0mmu39q">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_1j2pibl">
<text>"demo"</text>
</outputEntry>
<outputEntry id="LiteralExpression_0f635r8">
<text>["start"]</text>
</outputEntry>
<outputEntry id="LiteralExpression_18qbym6">
<text>"PG:manage-procurement:vendor-lifecycle-management"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_04wbkm7">
<inputEntry id="UnaryTests_0rbr6bh">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_1ubfxe8">
<text>"test"</text>
</outputEntry>
<outputEntry id="LiteralExpression_1f0vzm8">
<text>["start"]</text>
</outputEntry>
<outputEntry id="LiteralExpression_1uyihda">
<text>"PG:misc:test"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_0y6tpc1">
<inputEntry id="UnaryTests_0idup89">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_0jn02bx">
<text>"everybody"</text>
</outputEntry>
<outputEntry id="LiteralExpression_0qw2qs5">
<text>["read"]</text>
</outputEntry>
<outputEntry id="LiteralExpression_1671tcs">
<text>"PG:ALL"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_0vxd5xq">
<inputEntry id="UnaryTests_18ra8iv">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_09upqcm">
<text>"everybody"</text>
</outputEntry>
<outputEntry id="LiteralExpression_0qu6sf0">
<text>["all"]</text>
</outputEntry>
<outputEntry id="LiteralExpression_0mnqz8y">
<text>"BASIC"</text>
</outputEntry>
</rule>
</decisionTable>
</decision>
<dmndi:DMNDI>
<dmndi:DMNDiagram id="DMNDiagram_1cykosu">
<dmndi:DMNShape id="DMNShape_1dhfq2s" dmnElementRef="groups_to_permissions_table">
<dc:Bounds height="80" width="180" x="157" y="151" />
</dmndi:DMNShape>
</dmndi:DMNDiagram>
</dmndi:DMNDI>
</definitions>

View File

@ -0,0 +1,287 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" id="Definitions_96f6665" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.0.0-dev">
<bpmn:process id="set_permissions_process" isExecutable="true">
<bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>Flow_04t49zv</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_04t49zv" sourceRef="StartEvent_1" targetRef="Activity_0fqwhd1" />
<bpmn:sequenceFlow id="Flow_0q5cs4y" sourceRef="Activity_0pdrn26" targetRef="Activity_1jexxm1" />
<bpmn:businessRuleTask id="Activity_0fqwhd1" name="Determine Users Group">
<bpmn:extensionElements>
<spiffworkflow:calledDecisionId>users_to_groups_table</spiffworkflow:calledDecisionId>
</bpmn:extensionElements>
<bpmn:incoming>Flow_04t49zv</bpmn:incoming>
<bpmn:outgoing>Flow_194nkr6</bpmn:outgoing>
</bpmn:businessRuleTask>
<bpmn:businessRuleTask id="Activity_0iom85m" name="Determine Permissions">
<bpmn:extensionElements>
<spiffworkflow:calledDecisionId>groups_to_permissions_table</spiffworkflow:calledDecisionId>
</bpmn:extensionElements>
<bpmn:incoming>Flow_194nkr6</bpmn:incoming>
<bpmn:outgoing>Flow_0fhzucf</bpmn:outgoing>
</bpmn:businessRuleTask>
<bpmn:manualTask id="Activity_0pdrn26" name="Display Proposed Permissions">
<bpmn:extensionElements>
<spiffworkflow:instructionsForEndUser># Permission for each group
When you select continue, the following permissions will be written to the database.
{% for group in group_info %}
---
## {{group['name']}} Group
**Users in Group:**
{% for user in group['users'] %}
* {{ user }}
{% endfor %}
**Permissions:**
| Path | Allowed Actions |
| ---------------| -------|
{% for permission in group['permissions'] %}
| {{permission['uri']}} | {{ permission['actions'] |join(', ') }} |
{% endfor %}
{% endfor %}
</spiffworkflow:instructionsForEndUser>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0f4klqg</bpmn:incoming>
<bpmn:outgoing>Flow_0q5cs4y</bpmn:outgoing>
</bpmn:manualTask>
<bpmn:sequenceFlow id="Flow_194nkr6" sourceRef="Activity_0fqwhd1" targetRef="Activity_0iom85m" />
<bpmn:sequenceFlow id="Flow_132k5th" sourceRef="Activity_1jexxm1" targetRef="Activity_0ino532" />
<bpmn:scriptTask id="Activity_1jexxm1" name="Set Permissions">
<bpmn:incoming>Flow_0q5cs4y</bpmn:incoming>
<bpmn:outgoing>Flow_132k5th</bpmn:outgoing>
<bpmn:script># clear_permissions() ## Clears all groups and permissions from the system. EXCEPT ...
for group in group_info:
for user in group['users']:
add_user_to_group(user, group['name'])
for permission in group['permissions']:
for crud_op in permission['actions']:
add_permission(crud_op, permission['uri'], group['name'])
all_permissions = get_all_permissions()</bpmn:script>
</bpmn:scriptTask>
<bpmn:manualTask id="Activity_0ino532" name="Show Actual Permissions">
<bpmn:extensionElements>
<spiffworkflow:instructionsForEndUser>| Group | Path | Allowed Actions |
| ---------------| -------| ------|
{% for permission in all_permissions %}
| {{permission['group_identifier']}} | {{permission['uri']}} | {{permission['permissions']}}
{% endfor %}</spiffworkflow:instructionsForEndUser>
<spiffworkflow:postScript>del(all_permissions)</spiffworkflow:postScript>
</bpmn:extensionElements>
<bpmn:incoming>Flow_132k5th</bpmn:incoming>
<bpmn:outgoing>Flow_1ozuh1f</bpmn:outgoing>
</bpmn:manualTask>
<bpmn:sequenceFlow id="Flow_0f4klqg" sourceRef="Activity_0jt9kr1" targetRef="Activity_0pdrn26" />
<bpmn:scriptTask id="Activity_0jt9kr1" name="merge lists">
<bpmn:extensionElements>
<spiffworkflow:unitTests>
<spiffworkflow:unitTest id="Two Records Test">
<spiffworkflow:inputJson>{
"groups": [
"Administrators"
],
"users": [
"admin@spiffworkflow.org"
],
"permission_groups": [
"Administrators"
],
"permission_uris": [
"/*"
],
"permissions": [
[
"create",
"read",
"update",
"delete"
]
]
}</spiffworkflow:inputJson>
<spiffworkflow:expectedOutputJson>{
"group_info": [
{
"name":"Administrators",
"permissions": [
{"actions": [
"create","read","update","delete"
],
"uri": "/*"
}
],
"users": ["admin@spiffworkflow.org"]
}
]
}</spiffworkflow:expectedOutputJson>
</spiffworkflow:unitTest>
<spiffworkflow:unitTest id="Second Test">
<spiffworkflow:inputJson>{
"groups": [
"Administrators",
"Everyone"
],
"users": [
"admin@spiffworkflow.org",
"*"
],
"permission_groups": [
"Administrators",
"Everyone"
],
"permission_uris": [
"/*",
"/*"
],
"permissions": [
[
"create",
"read",
"update",
"delete"
],
[
"read"
]
]
}</spiffworkflow:inputJson>
<spiffworkflow:expectedOutputJson>{
"group_info": [
{
"name": "Administrators",
"permissions": [
{
"actions": [
"create",
"read",
"update",
"delete"
],
"uri": "/*"
}
],
"users": [
"admin@spiffworkflow.org"
]
},
{
"name": "Everyone",
"permissions": [
{
"actions": [
"read"
],
"uri": "/*"
}
],
"users": [
"*"
]
}
]
}</spiffworkflow:expectedOutputJson>
</spiffworkflow:unitTest>
</spiffworkflow:unitTests>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0fhzucf</bpmn:incoming>
<bpmn:outgoing>Flow_0f4klqg</bpmn:outgoing>
<bpmn:script>info_by_group = {}
for i, group in enumerate(groups):
if not group in info_by_group:
info_by_group[group] = {"users":[], "permissions": []}
info_by_group[group]["users"].append(users[i])
for i, group in enumerate(permission_groups):
if not group in info_by_group:
info_by_group[group] = {"users":[], "permissions": []}
info_by_group[group]["permissions"].append(
{"uri": permission_uris[i],
"actions": permissions[i]}
)
group_info = []
for group in info_by_group.keys():
group_info.append({
"name": group,
"users": info_by_group[group]['users'],
"permissions": info_by_group[group]['permissions']
})
del(info_by_group)
del(group)
del(i)
del(groups)
del(permissions)
del(permission_groups)
del(permission_uris)
del(users)</bpmn:script>
</bpmn:scriptTask>
<bpmn:sequenceFlow id="Flow_0fhzucf" sourceRef="Activity_0iom85m" targetRef="Activity_0jt9kr1" />
<bpmn:sequenceFlow id="Flow_1ozuh1f" sourceRef="Activity_0ino532" targetRef="Event_0nbfjnu" />
<bpmn:endEvent id="Event_0nbfjnu">
<bpmn:incoming>Flow_1ozuh1f</bpmn:incoming>
</bpmn:endEvent>
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="set_permissions_process">
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
<dc:Bounds x="179" y="159" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1afo4x3_di" bpmnElement="Activity_0fqwhd1">
<dc:Bounds x="280" y="137" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0e33fg2_di" bpmnElement="Activity_0iom85m">
<dc:Bounds x="440" y="137" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_16w91n5_di" bpmnElement="Activity_0pdrn26">
<dc:Bounds x="780" y="137" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0x17g2k_di" bpmnElement="Activity_1jexxm1">
<dc:Bounds x="940" y="137" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1h17v78_di" bpmnElement="Activity_0ino532">
<dc:Bounds x="1110" y="137" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0fj3k0v_di" bpmnElement="Activity_0jt9kr1">
<dc:Bounds x="610" y="137" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_0nbfjnu_di" bpmnElement="Event_0nbfjnu">
<dc:Bounds x="1272" y="159" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_04t49zv_di" bpmnElement="Flow_04t49zv">
<di:waypoint x="215" y="177" />
<di:waypoint x="280" y="177" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0q5cs4y_di" bpmnElement="Flow_0q5cs4y">
<di:waypoint x="880" y="177" />
<di:waypoint x="940" y="177" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_194nkr6_di" bpmnElement="Flow_194nkr6">
<di:waypoint x="380" y="177" />
<di:waypoint x="440" y="177" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_132k5th_di" bpmnElement="Flow_132k5th">
<di:waypoint x="1040" y="177" />
<di:waypoint x="1110" y="177" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0f4klqg_di" bpmnElement="Flow_0f4klqg">
<di:waypoint x="710" y="177" />
<di:waypoint x="780" y="177" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0fhzucf_di" bpmnElement="Flow_0fhzucf">
<di:waypoint x="540" y="177" />
<di:waypoint x="610" y="177" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_1ozuh1f_di" bpmnElement="Flow_1ozuh1f">
<di:waypoint x="1210" y="177" />
<di:waypoint x="1272" y="177" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>

View File

@ -0,0 +1,11 @@
{
"description": "",
"display_name": "Set Permissions",
"display_order": 0,
"exception_notification_addresses": [],
"fault_or_suspend_on_exception": "fault",
"files": [],
"metadata_extraction_paths": null,
"primary_file_name": "permissions.bpmn",
"primary_process_id": "set_permissions_process"
}

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" xmlns:biodi="http://bpmn.io/schema/dmn/biodi/2.0" id="site_admin_users_to_groups" name="DRD" namespace="http://camunda.org/schema/1.0/dmn">
<decision id="users_to_groups_table" name="Users to Groups">
<decisionTable id="decisionTable_1" hitPolicy="COLLECT" biodi:annotationsWidth="400">
<input id="input_1" biodi:width="150">
<inputExpression id="inputExpression_1" typeRef="string">
<text>"*"</text>
</inputExpression>
</input>
<output id="OutputClause_0vrbi1j" label="users" typeRef="string" />
<output id="output_1" name="groups" typeRef="Any" biodi:width="262" />
<rule id="DecisionRule_1xwvp7b">
<inputEntry id="UnaryTests_01wus0h">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_18kwlie">
<text>"admin@spiffworkflow.org"</text>
</outputEntry>
<outputEntry id="LiteralExpression_0ykubgu">
<text>"admin"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_1rbbrcv">
<inputEntry id="UnaryTests_0u0oanl">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_1r771e1">
<text>"nelson@spiffworkflow.org"</text>
</outputEntry>
<outputEntry id="LiteralExpression_0z6b50n">
<text>"organization"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_05sdhrp">
<inputEntry id="UnaryTests_0pp8xqw">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_0zv6pu2">
<text>"malala@spiffworkflow.org"</text>
</outputEntry>
<outputEntry id="LiteralExpression_07m82fl">
<text>"education"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_1jn6v9t">
<inputEntry id="UnaryTests_1srdiy4">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_1bz7u65">
<text>r".*"</text>
</outputEntry>
<outputEntry id="LiteralExpression_1ibpvtx">
<text>"everyone"</text>
</outputEntry>
</rule>
</decisionTable>
</decision>
<dmndi:DMNDI>
<dmndi:DMNDiagram id="DMNDiagram_1cykosu">
<dmndi:DMNShape id="DMNShape_1dhfq2s" dmnElementRef="users_to_groups_table">
<dc:Bounds height="80" width="180" x="157" y="151" />
</dmndi:DMNShape>
</dmndi:DMNDiagram>
</dmndi:DMNDI>
</definitions>