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

Instance Method Summary collapse

Methods included from Services::RequestSupport

#request_class, request_class, #request_for, #with_partial_request, #with_request

Instance Attribute Details

#auditing_serviceShamu::Auditing::AuditingService

Returns the service to report audit transactions to.

Returns:



18
# File 'lib/shamu/auditing/support.rb', line 18

attr_dependency :auditing_service, Shamu::Auditing::AuditingService

Instance Method Details

#audit_request(params, request_class, action: :smart) {|request, transaction| ... } ⇒ Result

Audit the requested changes and report the request to the #auditing_service.

See Services::RequestSupport#with_request

Parameters:

  • params (Request, Hash)

    of the request.

  • request_class (Class)

    to coerce params to.

Yields:

  • (request, transaction)

Yield Parameters:

  • request (Services::Request)

    coerced from params.

  • transaction (Transaction)

    the audit transaction. Most fields will be populated automatically from the request but the block should call Transaction#append_entity to include any parent entities in the entity path.

Returns:

  • (Result)


42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/shamu/auditing/support.rb', line 42

def audit_request( params, request_class, action: :smart, &block )
  transaction = Transaction.new \
    user_id_chain: auditing_security_principal.user_id_chain

  result = with_request params, request_class do |request|
    transaction.action  = audit_request_action( request, action )
    transaction.changes = request.to_attributes

    yield request, transaction
  end

  if result.valid?
    transaction.append_entity result.entity if result.entity
    auditing_service.commit( transaction )
  end

  result
end