bpmore/statamic-delegated
A Statamic addon for delegated access, letting you share control panel responsibilities across your team without handing over full permissions. Install via Composer and configure it directly from the Statamic CP.
Delegated is a Statamic add-on (installable into a Laravel app) that layers scoped editorial access on top of Statamic's own permissions: users are confined to territories, work is handed around through assignments, and every change of hands is recorded in an audit log.
Minimal path from zero:
composer require the package. As of v1.0.2 the Statamic constraint is >=6.31.0 <6.39.0, so a brand-new site that pulled Statamic 6.38 no longer needs a downgrade to install.Where to look first when something behaves unexpectedly: the published config, then the permission definitions in the service provider, then the audit log — it usually tells you who did what and under which territory.
Territory as the unit of scoping. Model territories around whatever your editors actually think in — a region, a brand, a market — not around site handles. Multi-site and territories are orthogonal: a territory may span sites, and a site may contain many territories. Keep the mapping explicit in config so it is reviewable in a diff rather than buried in the database.
Assignment as a hand-off, not a permission. Assignments route work to a person; territories decide what they can see. Keeping those two ideas separate makes both easier to reason about — you can reassign a piece of work without re-scoping anyone's access, and re-scope someone without silently stealing their queue.
Treat the audit log as an append-only compliance artifact. Read it through the package's query surface for reporting and dashboards; do not write to it, and do not let it become a general activity feed. If you need product analytics, emit your own events alongside it.
Seed in code, assign in the UI. Territories and the config-level wiring belong in seeders or a deploy step so environments stay reproducible. Actual day-to-day assignments should be made by editors in the control panel, because that is the action the audit log exists to record.
Test at the boundary. Statamic's testing helpers let you act as a user and assert what the control panel exposes. Assert the negative case — that a user in territory A cannot see or edit territory B's entries — rather than only asserting the happy path. That is the regression you actually care about.
CI and deploys. Pin the Statamic constraint in composer.json and let Dependabot/Renovate surface new 6.x minors; the addon's own range is intentionally narrow (see Gotchas). The control-panel assets ship prebuilt in the package, so a front-end build step is not part of your pipeline — but a stale published asset bundle in public/vendor is, so include the vendor publish in your deploy recipe.
Upgrades are cheap by design. v1.0.2 is a compatibility release: same restrictions, same behaviour, no migration, territories/assignments/audit log untouched. Budget upgrades as routine composer update work unless the notes say otherwise.
<6.39.0 means the day Statamic 6.39 ships, composer update on a site using Delegated will fail to resolve until a matching addon release lands. Know this in advance and pin Statamic to a known-good minor on production sites, or upgrade Statamic deliberately rather than incidentally.composer require on a new site failed or forced a downgrade. If you hit "your requirements could not be resolved" on a new project, check the addon version first — you want 1.0.2 or later.public/vendor both cache aggressively. After any addon upgrade, re-publish the assets and hard-reload before filing a UI bug.composer.lock for the CMS itself and treat Statamic upgrades as a reviewed change, not a side effect of composer update.How can I help you explore Laravel packages today?