Appearance
Application Level Permissions
Module Manager can generate permissions for models in your main Laravel application, similar to how it works with modules. This is particularly useful when you need a consistent permissions approach across both your modules and core application.
Permission Generation
Command Line
bash
# Generate permissions for all application models
php artisan mm:generate-permissions --app
# Generate permissions for specific application models
php artisan mm:generate-permissions --app --model=User --model=Product
# Generate permissions for all models (both in application and all modules)
php artisan mm:generate-permissions --all
Programmatic Usage
You can also manage permissions programmatically in your application code:
php
use ModuleManager\ModuleManager\Commands\GeneratePermissionsCommand;
// Remove all permissions for application models
$removedCount = GeneratePermissionsCommand::removeApplicationPermissions();
Permission Naming Convention
When generating permissions for application models, Module Manager follows this naming convention:
- For application models:
action_modelname
(e.g.,view_user
,create_product
) - For module models:
modulename_action_modelname
(e.g.,blog_view_post
,shop_update_product
)
This naming convention makes it easy to distinguish between application and module permissions.
Integration with Policies
The permissions generated for application models are designed to work with the policies generated by the mm:generate-policies
command. Each policy method checks for the corresponding permission.
Default Permission Actions
By default, Module Manager generates the following permission actions for each model:
viewAny
view
create
update
delete
restore
forceDelete
reorder
You can customize these actions in the config/module-manager.php
configuration file.