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.