Search by

dereuromark / cakephp-bouncer

dereuromark

CakePHP plugin for approval workflow - users propose changes, admins approve or reject before publishing

Package info

github.com/dereuromark/cakephp-bouncer

Homepage

Type:cakephp-plugin

pkg:composer/dereuromark/cakephp-bouncer

Statistics

Installs: 6 344

Dependents: 1

Suggesters: 0

Stars: 1

Open Issues: 2

1.3.0 2026-07-22 11:59 UTC

README

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

This branch is for CakePHP 5. 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; conflicts can keep the proposed value, so review the documented merge rules.
  • 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.

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/

  • Installation
  • Getting Started: behavior setup, controller wiring, proposal review
  • 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.