Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Oc Easyaudit Plugin Laravel Package

luketowers/oc-easyaudit-plugin

Adds easy, configurable audit logging to October CMS. Automatically track create, update and delete events on your models, browse detailed change histories, and see exactly who changed what and when—with minimal setup and no code changes.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Unchanged by v4.3.1. Despite being distributed via Composer, this is not a Laravel package — it is a Winter CMS plugin (LukeTowers\EasyAudit) that registers a backend controller, navigation item, and a model trait/behavior through Winter's plugin service provider. It has no value in a standalone Laravel application without porting the UI layer and re-implementing the audit persistence against a Laravel-native package (e.g. owen-it/laravel-auditing). The architecture fit question therefore reduces to a platform question: is the target system Winter CMS (or an October CMS v1 derivative)? If yes, fit is good — it hooks into the Storm ORM event lifecycle and the backend RBAC/permission system the same way first-party plugins do. If no, this is a reference implementation at best, not a dependency.

Integration feasibility. Mechanically low-effort in the right host: composer require luketowers/oc-easyaudit-plugin, enable the plugin, apply the audit trait to selected models, and the backend exposes a log viewer. Effort concentrates in three places: (1) confirming the storage schema and what fidelity is captured (old/new attribute diffs, actor identity, IP/user-agent, request context, related-model changes); (2) deciding which models are in scope, since trait rollout is per-model and has write-path cost; (3) authorization — verifying the viewer respects backend user roles rather than granting all backend users read access to potentially sensitive diffs.

v4.3.1 adds a small but useful data point for (1): the plugin honours trackable attribute overrides registered as dynamic properties, meaning per-model control over which attributes are tracked can be declared at runtime rather than only in the trait's static configuration. For our purposes this is primarily a redaction lever — it gives a supported mechanism to exclude PII-bearing attributes per model without forking — but it also means the set of tracked fields is not fully discoverable by reading model class definitions alone. Any fidelity or PII audit must inspect dynamic property registration at boot, not just declared property defaults.

Technical risk.

  • License (NOASSERTION) is still the gating risk and was not addressed by this release. No recognized SPDX identifier means legal must review before production. Do not treat "public GitHub repo" as a grant. This alone can kill the integration.
  • Bus factor 1 — reinforced, not improved. The changelog lists @LukeTowers under "New Contributors," which is a GitHub artifact: the sole maintainer merged their own first PR. There are still no external contributors, 17 stars, 0 dependents. Assume you own the code.
  • Naming drift. Repo is wn-easyaudit-plugin while the package/namespace is oc-easyaudit-plugin — evidence of an October→Winter migration. Documentation, screenshots, and examples may reference the older platform and Laravel/PHP versions.
  • Release metadata anomaly — partially resolved. v4.3.1 ships as a semver-style patch tag with a linked PR (#8) and a v4.3.0...v4.3.1 compare URL, which is evidence of a normal, traceable release process at a 4.x version line rather than an ad-hoc repo state. The earlier 2026-09-06 last-release date should now be read as evidence of active maintenance, but still verify the tag is signed/traceable and that the default branch and released tag agree before pinning.
  • Audit integrity. If audit rows are written in the same transaction and connection as the domain write, an audit failure can roll back business operations; if writes are swallowed, you get silent gaps that undermine the log's evidentiary value.
  • Silent config drift (new). Because tracked attributes can be overridden dynamically, a code change that alters dynamic property registration changes what is audited with no schema change and no migration to review. Add this to code review checklists.

Key questions for the maintainer / due diligence.

  1. What table(s) back the audit log, and is the schema owned by this plugin or by a third-party audit dependency?
  2. Does it capture actor, IP, user agent, request ID, and before/after values — or only a "changed" marker?
  3. How does it handle mass updates (Model::where(...)->update()), raw SQL, pivot/attach-detach, soft deletes, and restores — all of which bypass Eloquent model events?
  4. Are audit records immutable/tamper-evident, and is there a retention/purge mechanism?
  5. What is the permission model for viewing logs, and can access be scoped per model or per record?
  6. Is there an export path (CSV/JSON/webhook) suitable for forwarding to a SIEM?
  7. What is the actual license, and is commercial/redistributed use permitted? (Unanswered by v4.3.1 — still the blocking item.)
  8. Supported Winter CMS and PHP version matrix — and does it survive the next Winter major?
  9. (New) What is the documented interface and precedence order for dynamic-property trackable overrides versus trait-declared configuration, and are overrides validated against the model's actual columns?

Integration Approach

Stack fit. Green-light only for Winter CMS hosts. For Laravel-only estates, close the evaluation and instead adopt a native auditing package; the plugin's UI patterns are worth copying but the code is not portable.

Migration path.

  1. Legal first. Resolve the license question before any engineering time is spent. v4.3.1 does not change this.
  2. Sandbox PoC. Stand up a disposable Winter instance pinned to the production Winter/PHP versions. Install the plugin, enable it, and apply the trait to two or three representative models (one high-write, one with relations, one with soft deletes).
  3. Fidelity test. Perform create/update/delete/restore/attach/bulk-update against those models and diff what the log actually recorded versus what compliance expects. This is the go/no-go gate. Extend this test to cover the v4.3.1 behaviour: register a dynamic-property trackable override on one model, confirm it takes effect, and confirm what happens if the override names a non-existent or sensitive attribute.
  4. Vendor decision. If the PoC passes and the license permits, fork the repo into an internal namespace and pin to a commit SHA — do not track the upstream default branch. Pin to the v4.3.1 SHA specifically so the dynamic-property fix is captured in the pin rationale.

Compatibility. v4.3.1 is a patch-level bugfix with no changelog indication of breaking changes, deprecations, schema changes, or config-format changes — it should be a drop-in for anyone already on v4.3.0, and it does not reset prior PoC work. Still pin to an exact tag or SHA in composer.json and commit the lockfile; validate against the production Winter minor version explicitly, since plugin backends often break silently on Winter backend-UI changes. Budget for PHP version drift — an October-era plugin may not have been exercised on current PHP 8.x releases. Note that the changelog does not state a minimum Winter/PHP version for the fix, so re-run the version-matrix check against v4.3.1 rather than inheriting v4.3.0's result.

Sequencing.

  1. License clearance → 2. PoC and fidelity test (including dynamic-property override behaviour) → 3. Audit schema, retention, and PII-scrubbing policy agreed with security/compliance, expressed as a documented trackable-attribute allow/deny list → 4. Trait rollout to Tier‑1 models only (financial, auth, permission, config) → 5. Backend RBAC for log access → 6. Export/retention automation → 7. Runbook for audit gaps.

Keep the trait rollout incremental. Each model added is a permanent write-path and storage commitment; there is no easy rollback once months of history exist.

Operational Impact

Maintenance. Assume you own the code. v4.3.1 shows the maintainer is active on their own plugin, which is mildly reassuring, but it does not reduce your obligations: plan for an internal fork with a named owner, a documented patch process, and a scheduled review each Winter upgrade cycle. Upstream will not carry your fixes, and with one maintainer there is no second reviewer for their changes — treat even patch releases as code to be read before adoption.

Support. Community-only, no SLA, low issue volume, and a single responsive party. Escalation for a production audit outage is internal engineering, not vendor support. Set that expectation with stakeholders before adoption.

Scaling.

  • Every audited save becomes an additional INSERT, roughly doubling write volume on those tables and adding latency inside the request transaction.
  • Storing full before/after JSON payloads grows the table roughly with the size of the model row times the update frequency. High-churn models (sessions, counters, status fields) will dominate storage and should be excluded — the dynamic-property override in v4.3.1 gives a supported way to do this per model, but it must be applied deliberately and reviewed.
  • Bulk operations — imports, seeders, migrations, queue workers, artisan commands — will generate large bursts. Auditing should be disabled or sampled in those contexts, otherwise the table balloons in minutes.
  • The backend log viewer needs indexes on (auditable_type, auditable_id, created_at) and pagination; without them the UI will time out on any table with meaningful history.

Failure modes.

  • Silent gaps — mass updates, raw SQL, and non-Eloquent paths produce no audit rows while the log still looks complete. This is the most dangerous failure because it fails open. Dynamic-property trackable overrides widen this surface if an override silently fails to register.
  • Transaction coupling — audit writes in the same transaction can abort legitimate business operations; decoupled/queued writes can lose records on worker failure. Pick deliberately and document the trade-off.
  • PII leakage — attribute diffs routinely capture emails, tokens, addresses. Without a redaction list, the audit table becomes an ungoverned secondary copy of sensitive data. v4.3.1 makes redaction easier to implement but also makes the tracked-field set runtime-dependent, so redaction must be verified in the running app, not inferred from source.
  • Unbounded growth — no built-in retention means the table eventually becomes an operational problem and an expensive one to prune.
  • Access over-exposure — a default-permissive backend viewer hands every admin a full history of every audited model.
  • Upgrade breakage — a Winter core upgrade can break the viewer with no upstream fix forthcoming.

Ramp-up. For a developer already fluent in Winter CMS plugin conventions (plugin registration, Storm model traits, backend controllers, BackendAuth permissions, dynamic property registration on models), ramp-up is a day or two. For a Laravel-only team, expect one to two weeks just to become productive in Winter's ORM and backend patterns — which is a strong argument to skip this package entirely rather than absorb platform-specific knowledge for a 17-star, zero-dependent plugin.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log