adityaricki/laravel-permission

此包允许您在路由中管理权限

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

This package is auto-updated.

Last update: 2024-09-07 05:27:00 UTC


README

Issues Stars

此包允许您在路由中管理权限

需求

* 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.phpAdityaricki\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, ...]);