天天看点

用户角色权限控制包 Laravel-permissio

用户角色权限控制包

一般我们要写curb控制的时候,是非常繁多的事,所以,就产生了一个用户角色权限控制包

此软件包允许我管理数据库中的用户权限和角色

通过composer安装

composer require spatie/laravel-permission
           

安装完成后,这个扩展会提供生成迁移文件的命令

生成数据库迁移文件:

php artisan vendor:publish

–provider=“Spatie\Permission\PermissionServiceProvider” --tag=“migrations”

用户角色权限控制包 Laravel-permissio

在 migration 目录下可看到相关表信息,执行数据库迁移

php artisan migrate
           

会生成这些表

用户角色权限控制包 Laravel-permissio

还需要生成配置信息:

php artisan vendor:publish

–provider=“Spatie\Permission\PermissionServiceProvider” --tag=“config”

生成成功后,会在config配置目录中生成一个文件

用户角色权限控制包 Laravel-permissio

如果需要去使用它,还需要去引入它的包

比如,在user模型下加载

用户角色权限控制包 Laravel-permissio

如果想要在数据库中填充默认权限

创建权限管理的填充文件

php artisan make:seeder PermissionSeeder

在里面写入这些数据

//添加权限
        //填充用户权限数据
        $permissions = [
            ['name' => 'users.lock', 'cn_name' => '用户启用禁用','guard_name'=>'api'],
            ['name' => 'users.index', 'cn_name' => '用户列表','guard_name'=>'api'],
            ['name' => 'users.show', 'cn_name' => '用户详情','guard_name'=>'api'],
            ['name' => 'category.status', 'cn_name' => '分类的禁用和启用','guard_name'=>'api'],
            ['name' => 'category.index', 'cn_name' => '分类列表','guard_name'=>'api'],
            ['name' => 'category.store', 'cn_name' => '分类添加','guard_name'=>'api'],
            ['name' => 'category.show', 'cn_name' => '分类详情','guard_name'=>'api'],
            ['name' => 'category.update', 'cn_name' => '分类更新','guard_name'=>'api'],
            ['name' => 'goods.on', 'cn_name' => '商品上架下架','guard_name'=>'api'],
            ['name' => 'goods.recommend', 'cn_name' => '商品推荐','guard_name'=>'api'],
            ['name' => 'goods.index', 'cn_name' => '商品列表','guard_name'=>'api'],
            ['name' => 'goods.store', 'cn_name' => '商品添加','guard_name'=>'api'],
            ['name' => 'goods.show', 'cn_name' => '商品详情','guard_name'=>'api'],
            ['name' => 'goods.update', 'cn_name' => '商品更新','guard_name'=>'api'],
            ['name' => 'goods.destroy', 'cn_name' => '商品删除','guard_name'=>'api'],
            ['name' => 'comments.index', 'cn_name' => '评价列表','guard_name'=>'api'],
            ['name' => 'comments.show', 'cn_name' => '评价详情','guard_name'=>'api'],
            ['name' => 'comments.reply', 'cn_name' => '评价回复','guard_name'=>'api'],
            ['name' => 'orders.index', 'cn_name' => '订单列表','guard_name'=>'api'],
            ['name' => 'orders.show', 'cn_name' => '订单详情','guard_name'=>'api'],
            ['name' => 'orders.post', 'cn_name' => '快递发货','guard_name'=>'api'],
            ['name' => 'slides.seq', 'cn_name' => '轮播图排序','guard_name'=>'api'],
            ['name' => 'slides.status', 'cn_name' => '轮播图状态','guard_name'=>'api'],
            ['name' => 'slides.index', 'cn_name' => '轮播图列表','guard_name'=>'api'],
            ['name' => 'slides.store', 'cn_name' => '添加轮播图','guard_name'=>'api'],
            ['name' => 'slides.update', 'cn_name' => '轮播图更新','guard_name'=>'api'],
            ['name' => 'slides.destroy', 'cn_name' => '轮播图删除','guard_name'=>'api'],
            ['name' => 'menus', 'cn_name' => '菜单管理','guard_name'=>'api'],
        ];
        //将数据插入到权限表中
        foreach ($permissions as $p) {
            Permission::create($p);
        }
        //添加角色
        $role = Role::create(['name' => 'admin', 'cn_name' => '超级管理员','guard_name'=>'api']);
        //为角色添加权限
        $role->givePermissionTo(Permission::all());//所有权限都添加
           

这些填充命令就可以了。但是这样是需要一个一个命令去填充的,可以把这个文件引入到默认的填充文件中

database\seeders\DatabaseSeeder.php

用户角色权限控制包 Laravel-permissio