Bouncer Plugin For CakePHP

May 4, 2026 · View on GitHub

Build Status Coverage Status PHPStan Latest Stable Version Minimum PHP Version License Total Downloads Coding Standards

This branch is for CakePHP 5.1+. See version map for details.

Approval workflow for CakePHP: users propose changes, admins/moderators review and approve or reject before the changes hit the live database. Built for content-management systems, user-generated content moderation, data-entry quality control, and multi-stage editorial workflows.

Features

  • Drop-in approval workflow — single behavior on a Table turns saves into pending drafts; original record stays untouched until approved.
  • Admin diff viewer — built-in UI for the queue with side-by-side and inline diffs (word-level via jfcherng/php-diff), filters, status badges, and one-click approve / reject with reasons.
  • 3-way merge — proposals that became stale because the source record changed independently auto-merge non-overlapping edits; real conflicts surface for manual resolution.
  • Draft-safe re-edits — users editing the same record see and update their own pending draft instead of stacking duplicates; auto-supersede keeps the queue focused.
  • Flexible bypass — exempt user lists, custom bypass callbacks, or per-save bypassBouncer flag — integrate with policies, roles, or admin tooling.
  • Pairs with AuditStash — Bouncer logs the approval workflow; cakephp-audit-stash logs the data changes the approvals apply.
  • Transaction-safe — atomic apply on approval; failures roll back cleanly and leave the queue intact.

Installation

composer require dereuromark/cakephp-bouncer
bin/cake plugin load Bouncer
bin/cake migrations migrate -p Bouncer

Then add the behavior to any Table that should require approval — see the Getting Started guide.

Reverts are out of scope. Bouncer is the gate before changes ship. To roll a record back after it shipped, use AuditStash's Revert / Restore feature.

Documentation

Full docs: https://dereuromark.github.io/cakephp-bouncer/

  • Getting Started — installation, behavior setup, controller wiring
  • Configuration — behavior options and Bouncer.* app config
  • Usage — controller patterns, draft re-edit, programmatic approval
  • View Helper — render proposals in your own templates
  • Features overview — admin UI, approval workflow, 3-way merge, advanced patterns, AuditStash integration

Demo

https://sandbox.dereuromark.de/sandbox/bouncer-examples

Contributing

See CONTRIBUTING.md.