title: Permissions & Policies description: How Guardrails authorizes viewing and signing.
Permissions & Policies
By default, Guardrails’ routes require an authenticated user on the configured guard (defaults to your app’s auth.defaults.guard) and the approvals.manage ability (configurable). There are two authorization layers used internally:
- Spatie Permissions (if available)
- Permissions are checked with
$user->hasPermissionTo('...'). - Roles are checked with
$user->hasRole('...').
- Token Abilities (fallback)
- When Spatie is not available, permissions are matched against
currentAccessToken()->abilities. - Roles are not supported in this mode.
Signer Rules
permissions+permissions_mode(all|any)roles+roles_mode(all|any)guard: auth guard (default resolves toauth.defaults.guard)same_permission_as_initiator/same_role_as_initiator: require overlap
Route-level Permissions
permissions.view: required for listing/paging requestspermissions.sign: required for approving steps
Adjust these in config/guardrails.php to map to your own abilities.