rockbuzz/lara-rbac

此软件包已被废弃,不再维护。作者建议使用 https://github.com/rockbuzz/lara-rbac 软件包。

基于资源的角色访问控制

0.0.4 2020-12-04 18:07 UTC

This package is auto-updated.

Last update: 2021-06-29 09:50:11 UTC


README

基于资源的角色访问控制

Build Status

要求

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 许可证