This package is developed to help laravel developer to implement siple role and permission.
You can install the package via composer:
composer require bunthoeuntok/laravel-simple-permission
You can publish config, migrations and middleware by running:
php artisan permission:install
Then migrate tables by running:
php artisan migrate
This is the contents of the published config file:
return [
// Menu level structure
'menu_levels' => [
'module',
'sub-module',
'page'
],
// Cache key
'cache_key' => 'permissions',
// Menu structure to import
'data' => [
...
]
];
You need to use HasRole
trait in User.php
model
use Bunthoeuntok\SimplePermission\Traits\HasRole;
class User extends Authenticatable
{
...
use HasRole;
...
}
Register PermissionMiddleware.php
in Kernel.php
protected $routeMiddleware = [
...
'role.permission' => \App\Http\Middleware\PermissionMiddleware::class
];
Use naming route middleware in route file.
- Note: When you defined a route you should provide it with
name
, which match to route_name in menu action.
// Index action
Route::get('users', [UserController::class, 'index'])->middleware(['role.psermission', 'auth'])->name('users.index');
// Delete action
Route::get('users/{user}', [UserController::class, 'destroy'])->middleware(['role.psermission', 'auth'])->name('users.destroy');
- Create a role and assign user a role
// Create a role
$role = Bunthoeuntok\SimplePermission\Models\Role::create([
'role_name' => 'Admin',
'is_admin' => false;
]);
// Create user
$user = User::factory()->create();
// Assign role to a user
$user->assignRole($role);
- Create menu and its actions
$menu = Bunthoeuntok\SimplePermission\Models\Menu::create([
'menu_name' => 'User',
'level' => 'page'; // base on menu_levels in simple-permissions.php config
]);
// Create menu actions
$menu->actions()->saveMany([
new Bunthoeuntok\SimplePermission\Models\Menu([
'action_name' => 'index',
'route_name' => 'modules.root-pages.index',
'default' => true,
]),
new Bunthoeuntok\SimplePermission\Models\Menu([
'action_name' => 'delete',
'route_name' => 'modules.root-pages.delete',
])
]);
- Or by running command
php artisan permission:import
, this command will import menu structure, which was setdata
key in simple-permission.php config.
return [
// Menu structure to import
'data' => [
[
'menu_name' => 'User',
'level' => 'page',
'actions' => [
[
'action_name' => 'index',
'route_name' => 'users.index',
'default' => true,
],
[
'action_name' => 'delete',
'route_name' => 'users.delete',
],
]
],
],
]
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.