adityaricki / laravel-permission
此包允许您在路由中管理权限
v1.0.5
2022-06-07 00:28 UTC
README
此包允许您在路由中管理权限
需求
* PHP 8.0+
* Middleware API only work with Passport or Sanctum
安装
composer require adityaricki/laravel-permission
在您的config/app.php
文件中注册服务提供者
Adityaricki\LaravelPermission\LaravelPermissionServiceProvider::class
发布供应商文件
php artisan vendor:publish --provider="Adityaricki\LaravelPermission\LaravelPermissionServiceProvider"
此命令将复制文件 [/vendor/adityaricki/laravel-permission/src/config/laravel-permission.php]
到 [/config/laravel-permission.php]
模型和迁移
在您的模型中使用 traits HasRoutes.php
use Adityaricki\LaravelPermission\Traits\HasRoutes;
use HasRoutes;
如果您想使用 uuid 作为主键,您可以在 config laravel-permission.php
文件中进行设置
'use-uuid' => true,
运行迁移
php artisan migrate
中间件
此包包含用于 routes/web.php
的中间件 Adityaricki\LaravelPermission\Middleware\PermissionMiddleware
和用于 routes/api.php
的 Adityaricki\LaravelPermission\Middleware\PermissionMiddlewareApi
您可以在您的 app\Http\Kernel.php
文件中添加它们
protected $routeMiddleware = [ // ... 'laravel-permission' => \Adityaricki\LaravelPermission\Middleware\PermissionMiddleware::class, 'laravel-permission-api' => \Adityaricki\LaravelPermission\Middleware\PermissionMiddlewareApi::class, ];
然后您可以使用中间件规则来保护您的路由
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(...); });
同步路由
您可以使用此命令在数据库中同步路由
php artisan laravel-permission:sync-routes
附加、分离和同步 route_user
要附加路由到用户,可以使用此代码
// Attach 1 route into user $user->routes()->attach($routeId); // Attach multiple routes into user $user->routes()->attach([$routeId1, $routeId2, $routeId3, ...]);
要从不属于用户中分离路由,可以使用此代码
// Detach 1 route from user $user->routes()->detach($routeId); // Detach multiple routes from user $user->routes()->detach([$routeId1, $routeId2, $routeId3, ...]);
要同步用户中的路由,可以使用此代码
// Sync routes to user $user->routes()->sync([$routeId1, $routeId2, $routeId3, ...]); // Sync routes to user without detaching $user->routes()->syncWithoutDetaching([$routeId1, $routeId2, $routeId3, ...]);