rodrigopedra / laravel-simple-acl
Laravel Simple ACL
v1.1.1
2024-03-08 02:50 UTC
Requires
- php: ^8.1
- illuminate/config: ^9.0|^10.0|^11.0
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/http: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
README
要求
- PHP 8.1
- Laravel 9+
安装
{
"require": {
"rodrigopedra/laravel-simple-acl": "^1.0"
}
}
- 导出配置并设置项目的 User 模型类名
- 默认为:
App\Models\User
- 默认为:
- 将
\RodrigoPedra\LaravelSimpleACL\Concerns\HasACL特性添加到项目的 User 模型 - 运行迁移
- 可选:加载包含的 Middleware
- 这将加载和缓存已登录用户的角色和权限,并为每个权限定义一个门控
用法
通过包含的 RodrigoPedra\LaravelSimpleACL\Models\Role 和 RodrigoPedra\LaravelSimpleACL\Models\Permission Eloquent 模型创建角色和权限。
权限应分组到角色中,您可以为初始设置创建数据库填充器或迁移,例如
$addUsers = Permission::create([ 'label' => 'add-users', 'description' => 'User is allowed to create new users', 'sort_index' => 1, ]); $removeUsers = Permission::create([ 'label' => 'remove-users', 'description' => 'User is allowed to remove users', 'sort_index' => 2, ]); Role::create([ 'label' => 'admin', 'sort_index' => 1, ])->attachPermission($addUsers)->attachPermission($removeUsers); Role::create([ 'label' => 'leader', 'sort_index' => 2, ])->attachPermission($addUsers);
您可以使用包含的特性辅助方法向单个用户添加或删除角色
$user->attachRole(Role::hasLabel('admin')->first()); $user->detachRole(Role::hasLabel('leader')->first());
如果您将 \RodrigoPedra\LaravelSimpleACL\Http\Middleware\LoadSimpleACL 中间件添加到中间件堆栈,您可以使用 Laravel 的门控来检查权限
if ($user->can('add-users')) { // do something }
即使在 blade 视图中也是如此
@can('add-users') {{-- do something --}} @endcan