putheng / role
该软件包最新版本(1.1)没有可用的许可信息。
Laravel 的角色和权限包
1.1
2019-01-30 07:10 UTC
Requires
- php: >=7.0
- illuminate/database: >= 5.0
- illuminate/support: >= 5.0
Requires (Dev)
- orchestra/testbench: ~3.7
- phpunit/phpunit: ~7.0
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; }
在AppServiceProvider
的boot
方法中添加,用于启动服务。
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