Common Patterns
Two-Man Rule (initiator + one peer)
Flow::make()
->anyOfPermissions(['orders.manage'])
->includeInitiator(true, true)
->signedBy(2, 'Ops Two-Man')
->build();
One of Any Two Roles
Flow::make()
->anyOfRoles(['finance_manager','ops_manager'])
->signedBy(1, 'Management')
->build();
Multi-Step Escalation
Flow::make()
->anyOfPermissions(['local_rates.manage'])
->includeInitiator(true, true)
->signedBy(2, 'Ops')
->anyOfRoles(['finance_manager','ops_manager'])
->signedBy(1, 'Management')
->build();
Controller Intercept Without Touching Models
$changes = $request->validate(['status_id' => 'integer']);
$result = $this->guardrailIntercept($model, $changes, [
'description' => 'Escalate order status overrides to operations.',
'only' => ['status_id'],
'extender' => Flow::make()->anyOfPermissions(['orders.manage','orders.escalate'])->signedBy(2, 'Ops'),
]);
Related Guides
- Model Guarding Guide — Implement these recipes on your Eloquent models.
- Controller Interception Guide — Adapt patterns to request interception.
- Advanced Flows — Extend patterns with dynamic logic.
- Full Testing Guide — Confirm each recipe behaves as expected.