Module: Shamu::Auditing::Support
- Extended by:
- ActiveSupport::Concern
- Includes:
- Services::RequestSupport
- Defined in:
- lib/shamu/auditing/support.rb
Overview
Add auditing support to a Services::Servie.
Dependencies collapse
-
#auditing_service ⇒ Shamu::Auditing::AuditingService
The service to report audit transactions to.
Dependencies collapse
-
#audit_request(request, action: :smart) {|transaction| ... } ⇒ Result
Audit the requested changes and report the request to the #auditing_service.
Methods included from Services::RequestSupport
#request_class, request_class, #request_for, #with_request
Instance Attribute Details
#auditing_service ⇒ Shamu::Auditing::AuditingService
Returns the service to report audit transactions to.
18 |
# File 'lib/shamu/auditing/support.rb', line 18 attr_dependency :auditing_service, Shamu::Auditing::AuditingService |
Instance Method Details
#audit_request(request, action: :smart) {|transaction| ... } ⇒ Result
Audit the requested changes and report the request to the #auditing_service.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/shamu/auditing/support.rb', line 54 def audit_request( request, action: :smart, &block ) # rubocop:disable Metrics/PerceivedComplexity transaction = Transaction.new \ user_id_chain: auditing_security_principal.user_id_chain, changes: request.to_attributes( only: request.assigned_attributes ), action: audit_request_action( request, action ) result = yield transaction if block_given? result = Services::Result.coerce( result, request: request ) if result.valid? if result.entity transaction.append_entity result.entity elsif !transaction.entities? && request.respond_to?( :id ) && defined? entity_class transaction.append_entity [ entity_class, request.id ] end auditing_service.commit( transaction ) end result end |