yasser / laravel-roles
用于处理 Laravel 5.3 中角色和权限的强大包
0.1.2
2016-12-28 23:16 UTC
Requires
- php: >=5.6.4
- illuminate/database: ^5.3
Requires (Dev)
- mockery/mockery: ^0.9.6
- orchestra/testbench: ~3.0
- phpunit/phpunit: ~5.0
This package is not auto-updated.
Last update: 2024-09-28 21:16:13 UTC
README
安装
您可以通过以下步骤安装此包。
Composer
您可以使用 composer 命令安装包。
composer require yasser/laravel-roles
或者您也可以通过 Composer 文件拉取此包
{ "require": { ... "yasser/laravel-roles": "^0.1.2" } }
服务提供者
将包添加到您的应用程序服务提供者在 config/app.php 文件中。
'providers' => [ ... /* * Package Service Providers... */ Yasser\Roles\RolesServiceProvider::class, /* * Application Service Providers... */ ... ],
迁移
在控制台中执行此命令以将迁移文件添加到项目
php artisan vendor:publish --provider="Yasser\Roles\RolesServiceProvider" --tag=migrations
并运行迁移
php aritsan migrate
用户特性
在您的 User 模型中包含 HasRolesRelations 特性。
use Yasser\Roles\Traits\HasRolesRelations; class User extends Authenticatable { use Notifiable, HasRolesRelations; }
中间件
将中间件 VerifyPermission 添加到 app/Http/kernel.php 文件中。
/** * The application's route middleware. * * These middleware may be assigned to groups or used individually. * * @var array */ protected $routeMiddleware = [ ... 'verify' => \Yasser\Roles\Middlewares\VerifyPermission::class, 'check' => \Yasser\Roles\Middlewares\VerifyRole::class, ],
用法
创建权限
use Yasser\Roles\Models\Permission; $permission = Permission::create([ 'name' => 'Create Users', 'slug' => 'user.create', 'description' => '', //optional 'model' => '' //optional ]);
创建角色
use Yasser\Roles\Models\Role; $adminRole = Role::create([ 'name' => 'Admin', 'slug' => 'admin', 'description' => ''//optional ]);
将权限附加到或从角色中分离
您可以为角色附加一个权限
$createPermission = Permission::create([ 'name' => 'Create Users', 'slug' => 'user.create', 'description' => '', //optional 'model' => '' //optional ]); $role = Role::create([ 'name' => 'Admin', 'slug' => 'admin', ]); $role->attachPermission($createPermission);
或者您可以为角色附加多个权限
$createPermission = Permission::create([ 'name' => 'Create Users', 'slug' => 'user.create' ]); $deletePermission = Permission::create([ 'name' => 'Delete user', 'slug' => 'user.delete' ]); $role = Role::create([ 'name' => 'Admin', 'slug' => 'admin', ]); $role->attachPermissions([$createPermission, $deletePermission]);
从角色中分离一个权限
$role->detachPermission($createRole);
或者您可以从角色中分离多个权限
$role->detachPermissions([$createPermission, $deletePermission])
将角色附加到或从用户中分离
将角色附加到用户
$role = Role::create([ 'name' => 'Admin', 'slug' => 'admin', ]); $user->attachRole($role)
将多个角色附加到用户
$adminRole = Role::create([ 'name' => 'Admin', 'slug' => 'admin', ]); $operatorRole = Role::create([ 'name' => 'Operator', 'slug' => 'operator', ]); $user->attachRoles([$adminRole, $operatorRole]);
从用户中分离角色
$user->detachRole($role)
从用户中分离多个角色
$user->detachRoles([$adminRole, $operatorRole])
检查用户是否具有角色
$adminRole = Role::create([ 'name' => 'Admin', 'slug' => 'admin', ]); $user->checkRole('admin'); //return true or false
检查用户是否具有权限
$createPermission = Permission::create([ 'name' => 'Create Users', 'slug' => 'user.create' ]); $user->canDo('user.create');
Blade 指令
$role = Role::create([
'name' => 'Admin',
'slug' => 'admin',
]);
@checkRole('admin')
...
@endCheckRole
$createPermission = Permission::create([
'name' => 'Create Users',
'slug' => 'user.create'
]);
@canDo('user.create')
<a href="/users/create">Create a user</a>
@endCanDo
中间件函数
$role = Role::create([ 'name' => 'Admin', 'slug' => 'admin', ]); Route::get('user/create', ...)->middleware('ckeck:admin');
$createPermission = Permission::create([ 'name' => 'Create Users', 'slug' => 'user.create' ]); Route::get('/user/create', ... )->middleware('verify:user.create');