rodrigopedra/laravel-simple-acl

v1.1.1 2024-03-08 02:50 UTC

This package is auto-updated.

Last update: 2024-09-08 03:46:27 UTC


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\RoleRodrigoPedra\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