Laravel Permission Manager
This package provides a simple way of registering permissions, organising them by group and then retrieving all permissions. These permissions can then be assigned to User/Role entities and used for Access Control logic., (*1)
Installation
- Install the package using
composer require joshbrw/laravel-permission-manager
-
If you're using Laravel 5.5 this is all that is required, the package will automatically load its' own Providers and Facades. If you're using Laravel 5.4, read on.
- Then register the Service Provider in
config/app.php to ensure that the container bindings etc are loaded:
'providers' => [
...
Joshbrw\LaravelPermissions\LaravelPermissionManagerServiceProvider::class,
]
- You can then optionally register the
Permissions facade if you'd rather use Permission::registerPermissions() rather than using the PermissionManager directly:
'aliases' => [
...
'Permissions' => Joshbrw\LaravelPermissions\Facades\Permissions::class,
]
- You are now installed!
Registering Permissions
Permissions should usually be registered in the boot() method ophpuf a Service Provider - this ensures that this package has been able to register itself using it's own register() method first., (*2)
Using the Facade
The simplest way of registering permissions is using the Permissions facade. The following example registers the user.list and user.create permissions within the User group:, (*3)
use Permissions;
use Joshbrw\LaravelPermissions\Permission;
class MyProvider extends ServiceProvider {
public function boot()
{
Permissions::register('User', [
new Permission('user.list', 'List Users', 'This allows a User to list other Users.'),
new Permission('user.create', 'Create Users', 'This allows a User to create another User.'),
]);
}
}
Using the Trait
You can also use the RegistersPermissions trait if you're not a fan of Facades, for example:, (*4)
use Joshbrw\LaravelPermissions\Traits\RegistersPermissions;
use Joshbrw\LaravelPermissions\Permission;
class MyProvider extends ServiceProvider {
use RegistersPermissions;
public function boot()
{
$this->registerPermissions('User', [
new Permission('user.list', 'List Users', 'This allows a User to list other Users.'),
new Permission('user.create', 'Create Users', 'This allows a User to create another User.'),
]);
}
}