l5starter/permission-manager

Laravel 5 入门,权限管理包

安装: 103

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

公开问题: 0

类型:laravel-package

dev-master 2017-12-28 11:27 UTC

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 installcomposer 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 () {
    //
});