Commanded audit middleware
Command auditing middleware for Commanded CQRS/ES applications.
Records every dispatched command to the configured database storage. Includes whether the command was successfully handled, or any error.
Please refer to the CHANGELOG for features, bug fixes, and any upgrade advice included for each release.
MIT License
Getting started
Add
commanded_audit_middlewareto your list of dependencies inmix.exs:def deps do [{:commanded_audit_middleware, "~> 1.0"}] endAdd the following config section to
config/config.exs:config :commanded_audit_middleware, ecto_repos: [Commanded.Middleware.Auditing.Repo], serializer: Commanded.Serialization.JsonSerializerIf you prefer to instead serialize the
command_audit‘sdataandmetadatacolumns as JSONB (which can be indexed and queried efficiently), choose an Ecto schema type of:mapand a PostgreSQL database type of:jsonb:config :commanded_audit_middleware, ecto_repos: [Commanded.Middleware.Auditing.Repo], serializer: EventStore.JsonbSerializer, data_column_schema_type: :map, metadata_column_schema_type: :map, data_column_db_type: :jsonb, metadata_column_db_type: :jsonbBy default,
commanded_audit_middlewareshould filter allpassword,password_confirmationandsecretin your schemas. If you want to override and define your own filters, you should add the following to yourconfig/config.exs:config :commanded_audit_middleware, filter_fields: [:credit_card_number, :btc_private_key]Add the following config section to each environment’s config (e.g.
config/dev.exs):config :commanded_audit_middleware, Commanded.Middleware.Auditing.Repo, adapter: Ecto.Adapters.Postgres, database: "commanded_audit_middleware_dev", username: "postgres", password: "postgres", hostname: "localhost", port: "5432"Fetch and compile mix dependencies:
$ mix do deps.get, deps.compileCreate and migrate the command audit database:
$ mix ecto.create -r Commanded.Middleware.Auditing.Repo $ mix ecto.migrate -r Commanded.Middleware.Auditing.RepoAdd the middleware to any Commanded router.
defmodule Router do use Commanded.Commands.Router middleware(Commanded.Middleware.Auditing) end
Contributing
Pull requests to contribute new or improved features, and extend documentation are most welcome. Please follow the existing coding conventions.
You should include unit tests to cover any changes. Run mix test to execute the test suite:
mix deps.get
mix test