mirror of
https://github.com/ansible/awx.git
synced 2026-02-17 03:00:04 -03:30
Fix issue AC-650... hide sensitive fields from change record in activity stream
This commit is contained in:
@@ -230,6 +230,8 @@ def model_instance_diff(old, new):
|
|||||||
created model or deleted model). This will cause all fields with a value to have changed (from None).
|
created model or deleted model). This will cause all fields with a value to have changed (from None).
|
||||||
"""
|
"""
|
||||||
from django.db.models import Model
|
from django.db.models import Model
|
||||||
|
from awx.main.models.organization import Credential
|
||||||
|
|
||||||
if not(old is None or isinstance(old, Model)):
|
if not(old is None or isinstance(old, Model)):
|
||||||
raise TypeError('The supplied old instance is not a valid model instance.')
|
raise TypeError('The supplied old instance is not a valid model instance.')
|
||||||
if not(new is None or isinstance(new, Model)):
|
if not(new is None or isinstance(new, Model)):
|
||||||
@@ -250,8 +252,10 @@ def model_instance_diff(old, new):
|
|||||||
old_value = str(getattr(old, field.name, None))
|
old_value = str(getattr(old, field.name, None))
|
||||||
new_value = str(getattr(new, field.name, None))
|
new_value = str(getattr(new, field.name, None))
|
||||||
|
|
||||||
if old_value != new_value:
|
if old_value != new_value and field.name not in Credential.PASSWORD_FIELDS:
|
||||||
diff[field.name] = (old_value, new_value)
|
diff[field.name] = (old_value, new_value)
|
||||||
|
elif field.name in Credential.PASSWORD_FIELDS:
|
||||||
|
diff[field.name] = ("hidden", "hidden")
|
||||||
|
|
||||||
if len(diff) == 0:
|
if len(diff) == 0:
|
||||||
diff = None
|
diff = None
|
||||||
@@ -262,7 +266,12 @@ def model_to_dict(obj):
|
|||||||
"""
|
"""
|
||||||
Serialize a model instance to a dictionary as best as possible
|
Serialize a model instance to a dictionary as best as possible
|
||||||
"""
|
"""
|
||||||
|
from awx.main.models.organization import Credential
|
||||||
attr_d = {}
|
attr_d = {}
|
||||||
for field in obj._meta.fields:
|
for field in obj._meta.fields:
|
||||||
attr_d[field.name] = str(getattr(obj, field.name, None))
|
# FIXME: This needs to be aware of fields not to be included in the AS delta log
|
||||||
|
if field not in Credential.PASSWORD_FIELDS:
|
||||||
|
attr_d[field.name] = str(getattr(obj, field.name, None))
|
||||||
|
else:
|
||||||
|
attr_d[field.name] = "hidden"
|
||||||
return attr_d
|
return attr_d
|
||||||
|
|||||||
Reference in New Issue
Block a user