Skip to content

Commit d5045d3

Browse files
committed
[backend] WIP background tasks on user
1 parent fe12e98 commit d5045d3

File tree

1 file changed

+64
-16
lines changed

1 file changed

+64
-16
lines changed

pycti/utils/opencti_stix2.py

Lines changed: 64 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2511,6 +2511,10 @@ def apply_patch(self, item):
25112511
self.opencti.notification.update_field(
25122512
id=item_id, input=field_patch_without_files
25132513
)
2514+
elif item["type"] == "user":
2515+
self.opencti.user.update_field(
2516+
id=item_id, input=field_patch_without_files
2517+
)
25142518
else:
25152519
self.opencti.stix_domain_object.update_field(
25162520
id=item_id, input=field_patch_without_files
@@ -2583,6 +2587,62 @@ def organization_unshare(self, item):
25832587
item["id"], organization_ids, sharing_direct_container
25842588
)
25852589

2590+
def element_add_organizations(self, item):
2591+
organization_ids = self.opencti.get_attribute_in_extension(
2592+
"organization_ids", item
2593+
)
2594+
if organization_ids is None:
2595+
organization_ids = item["organization_ids"]
2596+
if item["type"] == "user":
2597+
for organization_id in organization_ids:
2598+
self.opencti.user.add_organization(id=item["id"], organization_id=organization_id)
2599+
else:
2600+
raise ValueError(
2601+
"Add organizations operation not compatible with type", {"type": item["type"]}
2602+
)
2603+
2604+
def element_remove_organizations(self, item):
2605+
organization_ids = self.opencti.get_attribute_in_extension(
2606+
"organization_ids", item
2607+
)
2608+
if organization_ids is None:
2609+
organization_ids = item["organization_ids"]
2610+
if item["type"] == "user":
2611+
for organization_id in organization_ids:
2612+
self.opencti.user.delete_organization(id=item["id"], organization_id=organization_id)
2613+
else:
2614+
raise ValueError(
2615+
"Remove organizations operation not compatible with type", {"type": item["type"]}
2616+
)
2617+
2618+
def element_add_groups(self, item):
2619+
group_ids = self.opencti.get_attribute_in_extension(
2620+
"group_ids", item
2621+
)
2622+
if group_ids is None:
2623+
group_ids = item["group_ids"]
2624+
if item["type"] == "user":
2625+
for group_id in group_ids:
2626+
self.opencti.user.add_membership(id=item["id"], group_id=group_id)
2627+
else:
2628+
raise ValueError(
2629+
"Add groups operation not compatible with type", {"type": item["type"]}
2630+
)
2631+
2632+
def element_remove_groups(self, item):
2633+
group_ids = self.opencti.get_attribute_in_extension(
2634+
"group_ids", item
2635+
)
2636+
if group_ids is None:
2637+
group_ids = item["group_ids"]
2638+
if item["type"] == "user":
2639+
for group_id in group_ids:
2640+
self.opencti.user.delete_membership(id=item["id"], group_id=group_id)
2641+
else:
2642+
raise ValueError(
2643+
"Remove groups operation not compatible with type", {"type": item["type"]}
2644+
)
2645+
25862646
def element_operation_delete(self, item, operation):
25872647
# If data is stix, just use the generic stix function for deletion
25882648
force_delete = operation == "delete_force"
@@ -2666,25 +2726,13 @@ def apply_opencti_operation(self, item, operation):
26662726
element_id=item["id"], connector_ids=connector_ids
26672727
)
26682728
elif operation == "add_organizations":
2669-
raise ValueError(
2670-
"Not implemented opencti_operation",
2671-
{"operation": operation},
2672-
)
2729+
self.element_add_organizations(item)
26732730
elif operation == "remove_organizations":
2674-
raise ValueError(
2675-
"Not implemented opencti_operation",
2676-
{"operation": operation},
2677-
)
2731+
self.element_remove_organizations(item)
26782732
elif operation == "add_groups":
2679-
raise ValueError(
2680-
"Not implemented opencti_operation",
2681-
{"operation": operation},
2682-
)
2733+
self.element_add_groups(item)
26832734
elif operation == "remove_groups":
2684-
raise ValueError(
2685-
"Not implemented opencti_operation",
2686-
{"operation": operation},
2687-
)
2735+
self.element_remove_groups(item)
26882736
else:
26892737
raise ValueError(
26902738
"Not supported opencti_operation",

0 commit comments

Comments
 (0)