bramalho / laravel-user-permissions
Laravel 用户权限包
v1.0.2
2019-02-16 17:19 UTC
Requires
- php: >=7.1.3
- laravel/framework: ^5.5
This package is auto-updated.
Last update: 2024-09-17 09:53:58 UTC
README
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 协议。