Skip to content

Conversation

@KofTwentyTwo
Copy link
Member

Summary

  • Adds ReadAuditLevel (NONE/GET/GET_AND_QUERY) on QAuditRules to optionally audit read operations (views and queries)
  • Async fire-and-forget via shared AuditHandlerExecutor thread pool -- never blocks or fails reads
  • QUERY audits include filter summary as auditDetail records; GET audits have no details
  • New READ handler type with ReadAuditHandlerInterface for custom read audit processing
  • InputSource guard (USER only) and recursion prevention (audit tables have no readAuditLevel)
  • QInstanceValidator checks: READ handler code references and audit table existence when readAuditLevel != NONE

Test plan

  • 17 tests in ReadAuditActionTest covering all ReadAuditLevel combinations, InputSource filtering, async isolation, handler invocation, recursion prevention, and auditDetail filter summaries
  • QInstanceValidatorTest for readAuditLevel validation
  • GetActionTest and QueryActionTest pass with integration changes

Closes #388

Add ReadAuditLevel (NONE/GET/GET_AND_QUERY) on QAuditRules to track
who viewed what data. Async fire-and-forget via shared thread pool.
Includes READ handler type, QInstanceValidator checks, and query
filter summary in auditDetail records.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(audit): support optional audit records for entity record views

2 participants