rockbuzz / lara-rbac
0.0.4
2020-12-04 18:07 UTC
Requires
- php: >=7.2
Requires (Dev)
- orchestra/testbench: ^4.0
- phpunit/phpunit: ^8.0
- squizlabs/php_codesniffer: ^3.2
This package is auto-updated.
Last update: 2021-06-29 09:50:11 UTC
README
基于资源的角色访问控制
要求
PHP >=7.3
安装
$ composer require rockbuzz/lara-rbac
$ php artisan vendor:publish --provider="Rockbuzz\LaraRbac\ServiceProvider" --tag="migrations"
$ php artisan migrate
将 Rbac 特性添加到您的 User 模型
use Rockbuzz\LaraRbac\Traits\HasRbac; use Rockbuzz\LaraRbac\Contracts\HasRbac as RbacInterface; class User extends Authenticatable implements RbacInterface { use HasRbac; ... }
使用
角色
创建角色
$adminRole = new \Rockbuzz\LaraRbac\Models\Role; $adminRole->name = 'admin'; $adminRole->save(); $writerRole = new \Rockbuzz\LaraRbac\Models\Role; $writerRole->name = 'writer'; $writerRole->save();
分配角色给用户
$user = User::find(1); $user->attachRole($adminRole, $resource);
或
$user->attachRole($adminRole->id, $resource);
或
$user->attachRole([$adminRole->id, $writerRole->id], $resource);
同步角色到用户
$user->syncRoles([$adminRole->id, $writerRole->id], $resource);
从用户中撤销角色
$user->detachRoles([$adminRole, $writerRole->id], $resource);
权限
创建权限
$postStore = new \Rockbuzz\LaraRbac\Models\Permission; $postStore->name = 'post.store'; $postStore->save(); $postUpdate = new \Rockbuzz\LaraRbac\Models\Permission; $postUpdate->name = 'post.update'; $postUpdate->save();
分配权限到角色
https://laravel.net.cn/docs/6.x/eloquent-relationships
分配权限到用户
$user = User::find(1); $user->attachPermission($postStore, $resource);
或
$user->attachPermission($postStore->id, $resource);
或
$user->attachPermission([$postStore->id, $postUpdate->id], $resource);
同步权限到用户
$user->syncPermissions([$postStore->id, $postUpdate->id], $resource);
从用户中撤销权限
$user->detachPermissions([$postStore->id, $postUpdate->id], $resource);
检查用户角色/权限
auth()->user()->hasRole('admin', $resource); auth()->user()->hasRole('admin|writer', $resource); auth()->user()->hasPermission('post.update', $resource); auth()->user()->hasPermission('post.update|delete.post', $resource);
Blade 指令
检查角色
@hasrole('admin', $resource)
// ok
@else
// no
@endrole
检查权限
@haspermission('post.store|post.update', $resource)
// ok
@else
// no
@endpermission
许可证
Lara RBAC 是开源软件,许可证为 MIT 许可证。