首页
学
【学】PHP
【学】前端
【学】Linux
【学】杂学
【学】支付
【学】Docker
享
【享】文件
【享】工具
日记
Me
【Me】我
【Me】留言
老郭博客-程序员客栈
文章模型
下载模型
首页
学
【学】PHP
【学】前端
【学】Linux
【学】杂学
【学】支付
【学】Docker
享
【享】文件
【享】工具
日记
Me
【Me】我
【Me】留言
首页
学
【学】PHP
Laravel - Entrust 实例安装与数据填充
Laravel - Entrust 实例安装与数据填充
发布时间:
2年前
作者:
老郭
热度:
967 ℃
评论数:
# Entrust实例安装与数据填充-start * 原理:Entrust的原理是基于RBAC 权限角色管理,用户通过角色来判断自己拥有哪些权限。结构如下图。  * 实践: * 生成权限填充器(种子文件): ``` php artisan make:seeder PermissionsTableSeeder ``` 编写要要填充的数据: ``` <?php use Illuminate\Database\Seeder; use App\Models\Permission; class PermissionTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { /* * 登陆权限 */ Permission::create([ 'name' => 'admin.system.login', 'display_name' => '登陆后台', 'description' => '登陆后台', ]); /* * 菜单权限 */ Permission::create([ 'name' => 'admin.menus.list', 'display_name' => '菜单列表', 'description' => '菜单列表', ]); Permission::create([ 'name' => 'admin.menus.add', 'display_name' => '添加菜单', 'description' => '添加菜单', ]); Permission::create([ 'name' => 'admin.menus.edit', 'display_name' => '修改菜单', 'description' => '修改菜单', ]); Permission::create([ 'name' => 'admin.menus.delete', 'display_name' => '删除菜单', 'description' => '删除菜单', ]); } } ``` * 生成角色填充器(种子文件): ``` php artisan make:seeder RolesTableSeeder ``` 编写要填充的角色数据,并给角色赋予权限: ``` <?php use Illuminate\Database\Seeder; use App\Models\Role; use App\Models\Permission; class RoleTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $admin = new Role; $admin->name = 'admin'; $admin->display_name = '超级管理员'; $admin->description = '超级管理员'; $admin->save(); $owner = new Role; $owner->name = 'user'; $owner->display_name = '普通管理员'; $owner->description = '普通管理员'; $owner->save(); /* * 超级管理员 */ $allPermission = array_column(Permission::all()->toArray(),'id'); $admin->perms()->sync($allPermission); /* * 普通管理员 */ $createUser = Permission::where('display_name','添加菜单')->first(); $loginBackend = Permission::where('name','admin.system.login')->first(); $owner->attachPermissions([$createUser,$loginBackend]); } } ``` * 修改`database/seeds/UsersTableSeeder.php` 文件,为添加的用户做相应的权限配置: 注意:闭包函数没法直接得到外面的数据,必需要在闭包后面 use () 一下。 ``` <?php use Illuminate\Database\Seeder; use App\Models\Role; class UsersTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { /* * 获取角色表里超级管理员的数据 */ $adminRole = Role::where('name','admin')->first(); /* * 获取角色表里普通管理员的数据 */ $userRole = Role::where('name','user')->first(); $admin = factory('App\User')->create([ 'name' => 'phpsix', 'username' => 'phpsix', 'email' => 'phpsix@163.com', 'password' => bcrypt('123456') ])->each(function($u) use ($adminRole) { $u->attachRole($adminRole); }); $users = factory('App\User', 3)->create([ 'password' => bcrypt('123456') ])->each(function($u) use ($userRole){ $u->roles()->attach($userRole->id); }); } } ``` * 修改`database/seeds/ DatabaseSeeder.php` 文件,填入要运行的填充器: ``` <?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $this->call(PermissionTableSeeder::class); $this->call(RoleTableSeeder::class); $this->call(UsersTableSeeder::class); $this->call(MenuTableSeeder::class); } } ``` * 数据回滚与迁移: 首先需要生成entrust.php 配置文件: `php artisan vendor:publish` 修改 config/entrust.php 文件: 将: `'permission' => 'App\Permission',` 改为: `'permission' => 'App\Models\Permission',` 将: `'role' => 'App\Role',` 改为: `'role' => 'App\Models\Role',` 数据回滚:`php artisan migrate:refresh` 数据迁移:`php artisan db:seed` 数据回滚+数据迁移:`php artisan migrate:refresh --seed` # Entrust实例安装与数据填充-end
Laravel,Entrust,RBAC,权限管理,安装,数据填充
上一篇:
Laravel - Entrust 权限管理包安装与配置
下一篇:
Laravel - Entrust 使用方法
栏目导航
【学】PHP
【学】前端
【学】Linux
【学】杂学
【学】支付
【学】Docker
相关文章
Laravel中的Controller(控制器)
1198 ℃
Laravel中的Model(模型)
1340 ℃
Laravel中的Route(路由)
1619 ℃
Laravel中的Middleware(中间件)
1157 ℃
Laravel的任务调度(定时任务)
2231 ℃
Laravel中带有条件搜索加分页
939 ℃
Composer - 快速入门(如有遗漏,敬请谅解)
1139 ℃
Laravel - 数据迁移
928 ℃
Laravel - 数据填充
969 ℃
Laravel - 论配置文件的重要性
961 ℃
Laravel - CSRF 攻击与防御
849 ℃
Laravel - 验证码(captcha)
1178 ℃
Laravel - Entrust 权限管理包安装与配置
1119 ℃
Laravel - Entrust 实例安装与数据填充
967 ℃
Laravel - Entrust 使用方法
926 ℃
Laravel - 服务设计模式
1173 ℃
Laravel - 后台模版、菜单表与路由定义
1491 ℃
Laravel - 菜单视图
1329 ℃
Laravel - 添加菜单
913 ℃
Laravel - 菜单递归及排序
1349 ℃
Laravel - 菜单列表视图
1047 ℃
Laravel - Redis 缓存菜单数据
2410 ℃
微信小程序
手机扫码访问