Include extra details in Invitation AuditEvent
This commit is contained in:
parent
589e2fac07
commit
c5342cacd4
@ -25,6 +25,10 @@ class AuditLog(object):
|
|||||||
)
|
)
|
||||||
return AuditEventQuery.get_all(pagination_opts)
|
return AuditEventQuery.get_all(pagination_opts)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_by_resource(cls, resource_id):
|
||||||
|
return db.session.query(AuditEvent).filter(AuditEvent.resource_id == resource_id).order_by(AuditEvent.time_created.desc()).all()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _resource_type(cls, resource):
|
def _resource_type(cls, resource):
|
||||||
return type(resource).__name__.lower()
|
return type(resource).__name__.lower()
|
||||||
|
@ -91,3 +91,24 @@ class Invitation(Base, TimestampsMixin, AuditableMixin):
|
|||||||
@property
|
@property
|
||||||
def is_revokable(self):
|
def is_revokable(self):
|
||||||
return self.is_pending and not self.is_expired
|
return self.is_pending and not self.is_expired
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_dod_id(self):
|
||||||
|
return self.user.dod_id if self.user is not None else None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def event_details(self):
|
||||||
|
return {
|
||||||
|
"email": self.email,
|
||||||
|
"dod_id": self.user_dod_id,
|
||||||
|
}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def history(self):
|
||||||
|
changes = self.get_changes()
|
||||||
|
change_set = {}
|
||||||
|
|
||||||
|
if "status" in changes:
|
||||||
|
change_set["status"] = [s.name for s in changes["status"]]
|
||||||
|
|
||||||
|
return change_set
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
{% if event.event_details %}
|
{% if event.event_details and event.resource_type == "user" %}
|
||||||
for User <code>{{ event.event_details.updated_user_id }}</code> ({{ event.event_details.updated_user_name }})
|
for User <code>{{ event.event_details.updated_user_id }}</code> ({{ event.event_details.updated_user_name }})
|
||||||
|
|
||||||
{% if event.event_details["environment"] %}
|
{% if event.event_details["environment"] %}
|
||||||
@ -40,6 +40,18 @@
|
|||||||
in Workspace <code>{{ event.event_details["workspace_id"] }}</code> ({{ event.event_details["workspace"] }})
|
in Workspace <code>{{ event.event_details["workspace_id"] }}</code> ({{ event.event_details["workspace"] }})
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
{% elif event.event_details and event.resource_type == "invitation" %}
|
||||||
|
{% set now_pending = event.changed_state.status and event.changed_state.status.1 == "PENDING" %}
|
||||||
|
{% if now_pending %}
|
||||||
|
now pending
|
||||||
|
{{ event.changed_state.status.1 }}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if event.changed_state and event.resource_type == 'environment_role' %}
|
||||||
|
from {{ event.changed_state.role[0] }} to {{ event.changed_state.role[1] }}
|
||||||
|
<br>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if event.workspace %}
|
{% if event.workspace %}
|
||||||
|
@ -17,6 +17,8 @@ from tests.factories import (
|
|||||||
InvitationFactory,
|
InvitationFactory,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from atst.domain.audit_log import AuditLog
|
||||||
|
|
||||||
|
|
||||||
def test_create_invitation():
|
def test_create_invitation():
|
||||||
workspace = WorkspaceFactory.create()
|
workspace = WorkspaceFactory.create()
|
||||||
@ -113,3 +115,15 @@ def test_resend_invitation():
|
|||||||
Invitations.resend(workspace.owner, workspace.id, invite.token)
|
Invitations.resend(workspace.owner, workspace.id, invite.token)
|
||||||
assert ws_role.invitations[0].is_revoked
|
assert ws_role.invitations[0].is_revoked
|
||||||
assert ws_role.invitations[1].is_pending
|
assert ws_role.invitations[1].is_pending
|
||||||
|
|
||||||
|
|
||||||
|
def test_audit_event_for_accepted_invite():
|
||||||
|
workspace = WorkspaceFactory.create()
|
||||||
|
user = UserFactory.create()
|
||||||
|
ws_role = WorkspaceRoleFactory.create(user=user, workspace=workspace)
|
||||||
|
invite = Invitations.create(workspace.owner, ws_role, user.email)
|
||||||
|
invite = Invitations.accept(user, invite.token)
|
||||||
|
|
||||||
|
accepted_event = AuditLog.get_by_resource(invite.id)[0]
|
||||||
|
assert "email" in accepted_event.event_details
|
||||||
|
assert "dod_id" in accepted_event.event_details
|
||||||
|
Loading…
x
Reference in New Issue
Block a user