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 --allProgrammatic 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:
viewAnyviewcreateupdatedeleterestoreforceDeletereorder
You can customize these actions in the config/module-manager.php configuration file.