bramalho/laravel-user-permissions

v1.0.2 2019-02-16 17:19 UTC

This package is auto-updated.

Last update: 2024-09-17 09:53:58 UTC


README

Latest Stable Version Total Downloads License

Laravel 用户权限是一个Laravel包,提供非常简单的用户角色和权限管理。

安装

安装包

composer require bramalho/laravel-user-permissions

config/app.php 中添加服务提供者

BRamalho\LaravelUserPermissions\LaravelUserPermissionsServiceProvider::class,

发布配置

php artisan vendor:publish --provider 'BRamalho\LaravelUserPermissions\LaravelUserPermissionsServiceProvider'

将权限特质添加到您的用户模型中

<?php

namespace App;

use BRamalho\LaravelUserPermissions\Traits\Permission;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable, Permission;

    //...
}

app\Http\Kernel.php 中注册中间件

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;
use BRamalho\LaravelUserPermissions\Http\Middleware\UserHasRole;
use BRamalho\LaravelUserPermissions\Http\Middleware\UserHasPermission;

class Kernel extends HttpKernel
{
    // ...

    protected $routeMiddleware = [
        // ...
        'role' => UserHasRole::class,
        'permission' => UserHasPermission::class
    ];
}

运行迁移

php artisan migrate

使用方法

您可以通过这种方式简单地分配或移除角色

<?php

use Illuminate\Database\Seeder;
use App\User;
use BRamalho\LaravelUserPermissions\Models\UserRole;
use BRamalho\LaravelUserPermissions\Models\UserPermission;

class UsersTableSeeder extends Seeder
{
    public function run()
    {
        User::create([
            'id' => 1,
            'name' => 'Admin',
            'email' => 'admin@app.local',
            'password' => bcrypt('admin')
        ]);
        User::create([
            'id' => 2,
            'name' => 'Publisher',
            'email' => 'publisher@app.local',
            'password' => bcrypt('publisher')
        ]);

        UserRole::create(
            [
                'id'    => 1,
                'name'  => 'Admin'
            ]
        );
        UserRole::create(
            [
                'id'    => 2,
                'name'  => 'Publisher'
            ]
        );

        UserPermission::create(
            [
                'id'            => 1,
                'user_role_id'  => 2,
                'module'        => 'pages',
                'action'        => 'view'
            ]
        );
        UserPermission::create(
            [
                'id'            => 2,
                'user_role_id'  => 2,
                'module'        => 'pages',
                'action'        => 'add'
            ]
        );
        UserPermission::create(
            [
                'id'            => 3,
                'user_role_id'  => 2,
                'module'        => 'pages',
                'action'        => 'edit'
            ]
        );

        $userAdmin = User::find(1);
        $roleAdmin = UserRole::find(1);
        $userAdmin->assignRole($roleAdmin);
        //$userPublisher->removeRole($roleAdmin);

        $userPublisher = User::find(2);
        $rolePublisher = UserRole::find(2);
        $userPublisher->assignRole($rolePublisher);
        //$userPublisher->removeRole($rolePublisher);
    }
}

在路由中使用中间件

Route::get('/page/{id}', 'PageController@index')->name('page')->middleware('permission:pages,view');
Route::get('/page/{id}/add', 'PageController@add')->name('pageAdd')->middleware('permission:pages,add');
Route::get('/page/{id}/edit', 'PageController@add')->name('pageAdd')->middleware('permission:pages,edit');
Route::delete('/page/{id}/delete', 'PageController@delete')->name('pageDelete')->middleware('permission:pages,delete');

许可协议

Laravel 用户权限 是开源软件,许可协议为 MIT 协议