Explorar o código

HUE-5749 [metadata] Add audit call when editing metadata

Romain Rigaux %!s(int64=8) %!d(string=hai) anos
pai
achega
cdb1300f02
Modificáronse 1 ficheiros con 35 adicións e 3 borrados
  1. 35 3
      desktop/libs/metadata/src/metadata/navigator_api.py

+ 35 - 3
desktop/libs/metadata/src/metadata/navigator_api.py

@@ -391,7 +391,15 @@ def add_tags(request):
   entity_id = json.loads(request.POST.get('id', ''))
   tags = json.loads(request.POST.get('tags', []))
 
-  if not entity_id or not tags or not isinstance(tags, list):
+  is_allowed = request.user.has_hue_permission(action='write', app='metadata')
+
+  request.audit = {
+    'allowed': is_allowed,
+    'operation': 'NAVIGATOR_ADD_TAG',
+    'operationText': 'Adding tags %s to entity %s' % (tags, entity_id)
+  }
+
+  if not entity_id or not tags or not isinstance(tags, list) or not is_allowed:
     response['error'] = _("add_tags requires an 'id' parameter and 'tags' parameter that is a non-empty list of tags")
   else:
     response['entity'] = api.add_tags(entity_id, tags)
@@ -409,7 +417,15 @@ def delete_tags(request):
   entity_id = json.loads(request.POST.get('id', ''))
   tags = json.loads(request.POST.get('tags', []))
 
-  if not entity_id or not tags or not isinstance(tags, list):
+  is_allowed = request.user.has_hue_permission(action='write', app='metadata')
+
+  request.audit = {
+    'allowed': is_allowed,
+    'operation': 'NAVIGATOR_DELETE_TAG',
+    'operationText': 'Removing tags %s to entity %s' % (tags, entity_id)
+  }
+
+  if not entity_id or not tags or not isinstance(tags, list) or not is_allowed:
     response['error'] = _("add_tags requires an 'id' parameter and 'tags' parameter that is a non-empty list of tags")
   else:
     response['entity'] = api.delete_tags(entity_id, tags)
@@ -427,7 +443,15 @@ def update_properties(request):
   entity_id = json.loads(request.POST.get('id', ''))
   properties = json.loads(request.POST.get('properties', {}))
 
-  if not entity_id or not properties or not isinstance(properties, dict):
+  is_allowed = request.user.has_hue_permission(action='write', app='metadata')
+
+  request.audit = {
+    'allowed': is_allowed,
+    'operation': 'NAVIGATOR_UPDATE_PROPERTIES',
+    'operationText': 'Updating property %s of entity %s' % (properties, entity_id)
+  }
+
+  if not entity_id or not properties or not isinstance(properties, dict) or not is_allowed:
     response['error'] = _("update_properties requires an 'id' parameter and 'properties' parameter that is a non-empty dict")
   else:
     response['entity'] = api.update_properties(entity_id, properties)
@@ -445,6 +469,14 @@ def delete_properties(request):
   entity_id = json.loads(request.POST.get('id', ''))
   keys = json.loads(request.POST.get('keys', []))
 
+  is_allowed = request.user.has_hue_permission(action='write', app='metadata')
+
+  request.audit = {
+    'allowed': is_allowed,
+    'operation': 'NAVIGATOR_DELETE_PROPERTIES',
+    'operationText': 'Deleting property %s of entity %s' % (keys, entity_id)
+  }
+
   if not entity_id or not keys or not isinstance(keys, list):
     response['error'] = _("update_properties requires an 'id' parameter and 'keys' parameter that is a non-empty list")
   else: