adityaricki/laravel-permission

This package allows you to manage permissions in your routes

v1.0.5 2022-06-07 00:28 UTC

This package is auto-updated.

Last update: 2025-07-07 07:18:02 UTC


README

Issues Stars

This package allows you to manage permissions in your routes

Requirements

* PHP 8.0+
* Middleware API only work with Passport or Sanctum

Installation:

composer require adityaricki/laravel-permission

Register service provider in your config/app.php file:

Adityaricki\LaravelPermission\LaravelPermissionServiceProvider::class

Publishing vendor files:

php artisan vendor:publish --provider="Adityaricki\LaravelPermission\LaravelPermissionServiceProvider"

This command will be Copied File [/vendor/adityaricki/laravel-permission/src/config/laravel-permission.php] To [/config/laravel-permission.php]

Model and Migration

Use traits HasRoutes.php in your model:

use Adityaricki\LaravelPermission\Traits\HasRoutes;
use HasRoutes;

If you want to use uuid as primary key, you can set in config laravel-permission.php file:

'use-uuid' => true,

Run migration:

php artisan migrate

Middleware

This package comes with middleware Adityaricki\LaravelPermission\Middleware\PermissionMiddleware for routes/web.php and Adityaricki\LaravelPermission\Middleware\PermissionMiddlewareApi for routes/api.php

you can add them in your app\Http\Kernel.php file

protected $routeMiddleware = [
    // ...
    'laravel-permission' => \Adityaricki\LaravelPermission\Middleware\PermissionMiddleware::class,
    'laravel-permission-api' => \Adityaricki\LaravelPermission\Middleware\PermissionMiddlewareApi::class,
];

Then you can protect your routes using middleware rules:

Route::group(['middleware' => 'laravel-permission'], function () {
    // Route::get(...);
    // Route::post(...);
    // Route::put(...);
    // Route::delete(...);
    // Route::resource(...);
});
Route::group(['middleware' => 'laravel-permission-api'], function () {
    // Route::get(...);
    // Route::post(...);
    // Route::put(...);
    // Route::delete(...);
    // Route::resource(...);
});

Sync Routes

You can sync routes in database using this command

php artisan laravel-permission:sync-routes

Attach, Detach and Sync route_user

To attach route into user you can use this code

// Attach 1 route into user
$user->routes()->attach($routeId);
// Attach multiple routes into user
$user->routes()->attach([$routeId1, $routeId2, $routeId3, ...]);

To detach route from user you can use this code

// Detach 1 route from user
$user->routes()->detach($routeId);
// Detach multiple routes from user
$user->routes()->detach([$routeId1, $routeId2, $routeId3, ...]);

To sync route from user you can use this code

// Sync routes to user
$user->routes()->sync([$routeId1, $routeId2, $routeId3, ...]);
// Sync routes to user without detaching
$user->routes()->syncWithoutDetaching([$routeId1, $routeId2, $routeId3, ...]);