l5starter / permission-manager
Laravel 5 入门,权限管理包
dev-master
2017-12-28 11:27 UTC
Requires
- l5starter/core: 5.4.x-dev
- spatie/laravel-permission: ^1.12
This package is not auto-updated.
Last update: 2024-09-14 18:26:19 UTC
README
安装
为了安装 Laravel 5,只需将以下内容添加到您的 composer.json 中。
"l5starter/permission-manager": "5.4.x-dev"
然后运行 composer install
或 composer update
。
然后在您的 config/app.php
中添加到 providers
Spatie\Permission\PermissionServiceProvider::class, L5Starter\PermissionManager\PermissionManagerServiceProvider::class,
您可以使用以下命令发布迁移
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"
运行迁移
$ php artisan migrate
您可以使用以下命令发布种子
php artisan vendor:publish --provider="L5Starter\PermissionManager\PermissionManagerServiceProvider" --tag="seeder"
运行种子
$ php artisan db:seed --class=RolesTableSeeder
在 resources/views/vendor/l5starter/admin/partials/sidebar.blade.php
中添加菜单
<li class="{{ (Request::is('admin/roles*') ? 'active' : '') }}"> <a href="{{ route('admin.roles.index') }}"> <i class="fa fa-users"></i> <span>{{ trans('l5starter::general.roles') }}</span> </a> </li> <li class="{{ (Request::is('admin/permissions*') ? 'active' : '') }}"> <a href="{{ route('admin.permissions.index') }}"> <i class="fa fa-cog"></i> <span>{{ trans('l5starter::general.permissions') }}</span> </a> </li>
用法
首先将 Spatie\Permission\Traits\HasRoles
-trait 添加到您的 User 模型中。
use Illuminate\Foundation\Auth\User as Authenticatable; use Spatie\Permission\Traits\HasRoles; class User extends Authenticatable { use HasRoles; // ... }
使用中间件
该包不包含检查权限的中间件,但添加这个中间件非常简单。
$ php artisan make:middleware RoleMiddleware
这将为您创建一个 RoleMiddleware,您可以在其中处理角色检查。
// app/Http/Middleware/RoleMiddleware.php use Auth; ... public function handle($request, Closure $next, $role) { if (Auth::guest()) { return redirect($urlOfYourLoginPage); } if (! $request->user()->hasRole($role)) { abort(403); } return $next($request); }
不要忘记将路由中间件添加到您的 Kernel 中
// app/Http/Kernel.php protected $routeMiddleware = [ ... 'role' => \App\Http\Middleware\RoleMiddleware::class, ... ];
现在您可以使用您刚刚设置的中间件保护您的路由
Route::group(['middleware' => ['role:admin']], function () { // });