[ 'slug' => 'shield/roles', 'show_model_path' => true, 'cluster' => null, 'tabs' => [ 'pages' => true, 'widgets' => true, 'resources' => true, 'custom_permissions' => false, ], ], /* |-------------------------------------------------------------------------- | Multi-Tenancy |-------------------------------------------------------------------------- | | When your application supports teams, Shield will automatically detect | and configure the tenant model during setup. This enables tenant-scoped | roles and permissions throughout your application. | */ 'tenant_model' => null, /* |-------------------------------------------------------------------------- | User Model |-------------------------------------------------------------------------- | | This value contains the class name of your user model. This model will | be used for role assignments and must implement the HasRoles trait | provided by the Spatie\Permission package. | */ 'auth_provider_model' => 'App\\Models\\User', /* |-------------------------------------------------------------------------- | Super Admin |-------------------------------------------------------------------------- | | Here you may define a super admin that has unrestricted access to your | application. You can choose to implement this via Laravel's gate system | or as a traditional role with all permissions explicitly assigned. | */ 'super_admin' => [ 'enabled' => true, 'name' => 'super_admin', 'define_via_gate' => false, 'intercept_gate' => 'before', ], /* |-------------------------------------------------------------------------- | Panel User |-------------------------------------------------------------------------- | | When enabled, Shield will create a basic panel user role that can be | assigned to users who should have access to your Filament panels but | don't need any specific permissions beyond basic authentication. | */ 'panel_user' => [ 'enabled' => true, 'name' => 'panel_user', ], /* |-------------------------------------------------------------------------- | Permission Builder |-------------------------------------------------------------------------- | | You can customize how permission keys are generated to match your | preferred naming convention and organizational standards. Shield uses | these settings when creating permission names from your resources. | | Supported formats: snake, kebab, pascal, camel, upper_snake, lower_snake | */ 'permissions' => [ 'separator' => ':', 'case' => 'pascal', 'generate' => true, ], /* |-------------------------------------------------------------------------- | Policies |-------------------------------------------------------------------------- | | Shield can automatically generate Laravel policies for your resources. | When merge is enabled, the methods below will be combined with any | resource-specific methods you define in the resources section. | */ 'policies' => [ 'path' => app_path('Policies'), 'merge' => true, 'generate' => true, 'methods' => [ 'viewAny', 'view', 'create', 'update', 'delete', 'restore', 'forceDelete', 'forceDeleteAny', 'restoreAny', 'replicate', 'reorder', ], 'single_parameter_methods' => [ 'viewAny', 'create', 'deleteAny', 'forceDeleteAny', 'restoreAny', 'reorder', ], ], /* |-------------------------------------------------------------------------- | Localization |-------------------------------------------------------------------------- | | Shield supports multiple languages out of the box. When enabled, you | can provide translated labels for permissions to create a more | localized experience for your international users. | */ 'localization' => [ 'enabled' => false, 'key' => 'filament-shield::filament-shield.resource_permission_prefixes_labels', ], /* |-------------------------------------------------------------------------- | Resources |-------------------------------------------------------------------------- | | Here you can fine-tune permissions for specific Filament resources. | Use the 'manage' array to override the default policy methods for | individual resources, giving you granular control over permissions. | */ 'resources' => [ 'subject' => 'model', 'manage' => [ \BezhanSalleh\FilamentShield\Resources\Roles\RoleResource::class => [ 'viewAny', 'view', 'create', 'update', 'delete', ], ], 'exclude' => [ // ], ], /* |-------------------------------------------------------------------------- | Pages |-------------------------------------------------------------------------- | | Most Filament pages only require view permissions. Pages listed in the | exclude array will be skipped during permission generation and won't | appear in your role management interface. | */ 'pages' => [ 'subject' => 'class', 'prefix' => 'view', 'exclude' => [ \Filament\Pages\Dashboard::class, ], ], /* |-------------------------------------------------------------------------- | Widgets |-------------------------------------------------------------------------- | | Like pages, widgets typically only need view permissions. Add widgets | to the exclude array if you don't want them to appear in your role | management interface. | */ 'widgets' => [ 'subject' => 'class', 'prefix' => 'view', 'exclude' => [ \Filament\Widgets\AccountWidget::class, \Filament\Widgets\FilamentInfoWidget::class, ], ], /* |-------------------------------------------------------------------------- | Custom Permissions |-------------------------------------------------------------------------- | | Sometimes you need permissions that don't map to resources, pages, or | widgets. Define any custom permissions here and they'll be available | when editing roles in your application. | */ 'custom_permissions' => [], /* |-------------------------------------------------------------------------- | Entity Discovery |-------------------------------------------------------------------------- | | By default, Shield only looks for entities in your default Filament | panel. Enable these options if you're using multiple panels and want | Shield to discover entities across all of them. | */ 'discovery' => [ 'discover_all_resources' => false, 'discover_all_widgets' => false, 'discover_all_pages' => false, ], /* |-------------------------------------------------------------------------- | Role Policy |-------------------------------------------------------------------------- | | Shield can automatically register a policy for role management itself. | This lets you control who can manage roles using Laravel's built-in | authorization system. Requires a RolePolicy class in your app. | */ 'register_role_policy' => true, ];