Improve auditing
This commit is contained in:
@@ -10,6 +10,8 @@ from gatehouse_app.services.organization_service import OrganizationService
|
||||
from gatehouse_app.services.user_service import UserService
|
||||
from gatehouse_app.exceptions import OrganizationNotFoundError
|
||||
from gatehouse_app.extensions import db
|
||||
from gatehouse_app.utils.constants import AuditAction
|
||||
from gatehouse_app.services.audit_service import AuditService
|
||||
|
||||
|
||||
class PrincipalCreateSchema(Schema):
|
||||
@@ -127,6 +129,15 @@ def create_principal(org_id):
|
||||
db.session.add(principal)
|
||||
db.session.commit()
|
||||
|
||||
AuditService.log_action(
|
||||
action=AuditAction.PRINCIPAL_CREATED,
|
||||
user_id=g.current_user.id,
|
||||
organization_id=org_id,
|
||||
resource_type="principal",
|
||||
resource_id=str(principal.id),
|
||||
description=f"Principal '{principal.name}' created",
|
||||
)
|
||||
|
||||
return api_response(
|
||||
data={"principal": principal.to_dict()},
|
||||
message="Principal created successfully",
|
||||
@@ -255,6 +266,15 @@ def update_principal(org_id, principal_id):
|
||||
|
||||
db.session.commit()
|
||||
|
||||
AuditService.log_action(
|
||||
action=AuditAction.PRINCIPAL_UPDATED,
|
||||
user_id=g.current_user.id,
|
||||
organization_id=org_id,
|
||||
resource_type="principal",
|
||||
resource_id=str(principal.id),
|
||||
description=f"Principal '{principal.name}' updated",
|
||||
)
|
||||
|
||||
return api_response(
|
||||
data={"principal": principal.to_dict()},
|
||||
message="Principal updated successfully",
|
||||
@@ -308,6 +328,15 @@ def delete_principal(org_id, principal_id):
|
||||
principal.deleted_at = db.func.now()
|
||||
db.session.commit()
|
||||
|
||||
AuditService.log_action(
|
||||
action=AuditAction.PRINCIPAL_DELETED,
|
||||
user_id=g.current_user.id,
|
||||
organization_id=org_id,
|
||||
resource_type="principal",
|
||||
resource_id=str(principal.id),
|
||||
description=f"Principal '{principal.name}' deleted",
|
||||
)
|
||||
|
||||
return api_response(
|
||||
message="Principal deleted successfully",
|
||||
)
|
||||
@@ -476,6 +505,15 @@ def add_principal_member(org_id, principal_id):
|
||||
|
||||
db.session.commit()
|
||||
|
||||
AuditService.log_action(
|
||||
action=AuditAction.PRINCIPAL_MEMBER_ADDED,
|
||||
user_id=g.current_user.id,
|
||||
organization_id=org_id,
|
||||
resource_type="user",
|
||||
resource_id=str(user.id),
|
||||
description=f"Added user {user.email} to principal '{principal.name}'",
|
||||
)
|
||||
|
||||
member_dict = membership.to_dict()
|
||||
member_dict["user"] = user.to_dict()
|
||||
|
||||
@@ -548,6 +586,15 @@ def remove_principal_member(org_id, principal_id, user_id):
|
||||
membership.deleted_at = db.func.now()
|
||||
db.session.commit()
|
||||
|
||||
AuditService.log_action(
|
||||
action=AuditAction.PRINCIPAL_MEMBER_REMOVED,
|
||||
user_id=g.current_user.id,
|
||||
organization_id=org_id,
|
||||
resource_type="user",
|
||||
resource_id=str(user_id),
|
||||
description=f"Removed user from principal '{principal.name}'",
|
||||
)
|
||||
|
||||
return api_response(
|
||||
message="Member removed successfully",
|
||||
)
|
||||
@@ -697,6 +744,15 @@ def link_principal_to_department(org_id, principal_id, dept_id):
|
||||
error_type="SERVER_ERROR",
|
||||
)
|
||||
|
||||
AuditService.log_action(
|
||||
action=AuditAction.PRINCIPAL_DEPARTMENT_LINKED,
|
||||
user_id=g.current_user.id,
|
||||
organization_id=org_id,
|
||||
resource_type="principal",
|
||||
resource_id=str(principal_id),
|
||||
description=f"Principal '{principal.name}' linked to department '{dept.name}'",
|
||||
)
|
||||
|
||||
return api_response(
|
||||
data={
|
||||
"principal": principal.to_dict(),
|
||||
@@ -774,6 +830,15 @@ def unlink_principal_from_department(org_id, principal_id, dept_id):
|
||||
link.deleted_at = db.func.now()
|
||||
db.session.commit()
|
||||
|
||||
AuditService.log_action(
|
||||
action=AuditAction.PRINCIPAL_DEPARTMENT_UNLINKED,
|
||||
user_id=g.current_user.id,
|
||||
organization_id=org_id,
|
||||
resource_type="principal",
|
||||
resource_id=str(principal_id),
|
||||
description=f"Principal '{principal.name}' unlinked from department '{dept.name}'",
|
||||
)
|
||||
|
||||
return api_response(
|
||||
message="Principal unlinked from department successfully",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user