putheng/role

该软件包最新版本(1.1)没有可用的许可信息。

Laravel 的角色和权限包

1.1 2019-01-30 07:10 UTC

This package is auto-updated.

Last update: 2024-09-29 05:28:09 UTC


README

使用composer安装此软件包。

composer require putheng/role

Laravel 5.5 使用包自动发现,因此不需要您手动添加ServiceProvider。

从头开始设置

Laravel 5.5+

如果您不使用自动发现,请将ServiceProvider添加到config/app.php中的providers数组中

Putheng\Role\RoleServiceProvider::class,

模式

对于Laravel 5迁移

php artisan migrate

模型

您的模型应使用Putheng\Role\Traits\HasPermissionsTrait特性来为用户模型添加权限

use Putheng\Role\Traits\HasPermissionsTrait;

class User extends Model {
    use HasPermissionsTrait;
}

AppServiceProviderboot方法中添加,用于启动服务。

use Putheng\Role\Models\Permission;

Permission::get()->map(function($permission){
    Gate::define($permission->name, function($user) use ($permission){
        return $user->hasPermissionTo($permission);
    });
});

中间件

RoleMiddleware添加到App\Http\Kernel类中的$routeMiddleware

'role' => \Putheng\Role\RoleMiddleware::class,
路由器
Route::group(['middleware' => 'role:admin'], function () {
    Route::group(['middleware' => 'role:admin,delete users'], function () {
        Route::get('/admin/users', function () {
            return 'Delete users in admin panel';
        });
    });

    Route::get('/admin', function () {
        return 'Admin panel';
    });
});

用法

检查用户是否有角色

$user = User::find(1);

// multiple argument
$user->hasRole('admin', 'user');
// true or false 

分配角色给

$user = User::find(1);

// multiple argument
$user->giveRoleTo('admin', 'user');
// true or false 

刷新角色

$user = User::find(1);

// multiple argument
$user->refreshRoles('admin', 'user');
// true or false 

检查用户是否有权限或通过角色获得的权限

$user = User::find(1);

$user->hasPermissionTo('edit posts', 'delete posts');
// true or false 

// Use Laravel Gate can method
$user->can('edit posts');

分配权限

$user = User::find(1);

$user->givePermissionTo(['edit posts', 'delete posts']);

撤销权限

$user = User::find(1);

$user->withdrawPermissionTo(['edit posts']);

刷新权限移除用户的所有权限并重新分配权限

$user = User::find(1);

$user->refreshPermissions(['edit posts']);

自定义blade模板中的输出

@role('admin')
    <a href="#">Admin panel</a>
@endrole

权限

@permission('edit post')
    <a href="#">Edit post</a>
@endpermission