laravel5.1-第10.5章-RBAC-romanbican/roles laravel5.1-第10.5章-RBAC-romanbican/roles

2023-07-06

一、下载 laravel 5.1

composer create-project laravel/laravel=5.1.* laravel5.1_rbac

新建数据库 laravel5.1_rbac

修改 .evn 配置文件

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel5.1_rbac
DB_USERNAME=laravel5.1_rbac
DB_PASSWORD=laravel5.1_rbac

修改中国时区,在 config/app.php 中修改

'timezone' => 'PRC',

切换目录

cd laravel5.1_rbac

二、下载 romanbican/roles

打开:https://github.com/romanbican/roles

修改 composer.json:require 新增

"bican/roles": "2.1.*"

然后执行

composer update

config/app.php 的 providers 新增

Bican\Roles\RolesServiceProvider::class,

执行 artisan

php artisan vendor:publish --provider="Bican\Roles\RolesServiceProvider" --tag=config
php artisan vendor:publish --provider="Bican\Roles\RolesServiceProvider" --tag=migrations

执行数据迁移

php artisan migrate

https://file.lulublog.cn/images/3/2023/07/BpktTZwvTRN8sw8NH0OqQOpHz4k9op.jpg

配置 User 模型

use Bican\Roles\Traits\HasRoleAndPermission;
use Bican\Roles\Contracts\HasRoleAndPermission as HasRoleAndPermissionContract;

class User extends Model implements AuthenticatableContract,AuthorizableContract,CanResetPasswordContract,HasRoleAndPermissionContract
{
   use Authenticatable, Authorizable, CanResetPassword, HasRoleAndPermission
   {
       HasRoleAndPermission ::can insteadof Authorizable;
   }

三、使用 romanbican/roles

进入 tinker

php artisan tinker

创建 10 个用户

factory('App\User', 10)->create();

创建控制器

php artisan make:controller RolesController

创建角色:修改 app/Http/Controllers/RolesController

use Bican\Roles\Models\Role;

public function index()
{
   Role::create([
       'name' => 'Admin',
       'slug' => 'admin',
       'description' => '',
       'level' => 1,
   ]);
   Role::create([
       'name' => 'Member',
       'slug' => 'member',
       'description' => '',
       'level' => 2,
   ]);
   Role::create([
       'name' => 'Vip',
       'slug' => 'vip',
       'description' => '',
       'level' => 3,
   ]);
   Role::create([
       'name' => 'Sponsor',
       'slug' => 'sponsor',
       'description' => '',
       'level' => 4,
   ]);
   return 'success';
}

注册路由:修改 app/Http/routes.php

Route::get('/roles', 'RolesController@index');

启动 serve

php artisan serve

访问:http://localhost:8000/roles,roles 表新增数据

https://file.lulublog.cn/images/3/2023/07/NCKEXe8HyeWIWTthKT9ki2cnW26z9W.jpg

创建权限:修改 app/Http/Controllers/RolesController

use Bican\Roles\Models\Permission;

public function index()
{
   $createUsersPermission = Permission::create([
       'name' => 'Create users',
       'slug' => 'create.users',
       'description' => '', // optional
   ]);
   $deleteUsersPermission = Permission::create([
       'name' => 'Delete users',
       'slug' => 'delete.users',
   ]);
   return 'success';
}

访问:http://localhost:8000/roles,permissions 表新增数据

https://file.lulublog.cn/images/3/2023/07/q6Lb7RW37767wwFT1wHW3Hw79wJWwu.jpg

设置用户角色:修改 app/Http/Controllers/RolesController

use App\User;

public function index()
{
   $user = User::find(1);
   $user->attachRole(1);
   $user = User::find(2);
   $user->attachRole(2);
   return 'success';
}

访问:http://localhost:8000/roles,role_user 表新增数据

https://file.lulublog.cn/images/3/2023/07/L85G08k552Kg2H5xb2BEysEsh228E5.jpg

验证权限:修改 app/Http/Controllers/RolesController

public function index()
{
   $user = User::find(1);
   return [
       'isAdmin' => $user->is('admin'),
       'isMember' => $user->is('member'),
   ];
}

访问:http://localhost:8000/roles

https://file.lulublog.cn/images/3/2023/07/LAe8n6R6RA60X4M6r2m9J008Tx66Ax.jpg

更多用法:https://github.com/romanbican/roles

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦

阅读 250