Skip to content

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.