iya30n / dynamic-acl
此包的最新版本(1.1.0)没有提供许可证信息。
1.1.0
2023-06-21 09:14 UTC
Requires
- php: ^7.3|^8.0
- javoscript/laravel-macroable-models: ^1.0
- laravel/framework: ^8.0|^9.0|^10.0
Requires (Dev)
- mockery/mockery: ^1.5
- orchestra/testbench: ^7.3
- phpunit/phpunit: ^9.5
README
Dynamic ACL 是一个处理 Laravel 应用程序访问控制级别的包。它运行速度快,使用简单。安装并享受吧 ;)
功能
安装
先决条件
- 构建你的基于会话的认证系统。
- 为你的路由定义一个名称。
composer require iya30n/dynamic-acl
发布配置文件
php artisan vendor:publish
迁移角色表
php artisan migrate
不用担心关系;我们为你处理。
运行 make:admin
命令
此命令将你的第一个管理员设置为超级管理员,具有完全访问权限。
php artisan make:admin --role
使用方法
只需运行你的应用程序并访问 locahost:8000/admin/roles
。您将看到角色列表。您可以创建一个新的,编辑或删除它们。
配置
发布供应商后,您可以在 config/dynamicACL.php
文件中更改配置。
它有以下选项
- alignment:更改 UI 对齐方式。可以是 RTL 或 LTR。此外,当您更改语言时,CRUD 角色将在(fa,en)中更改。
- controllers_path:控制器命名空间。
- ignore_list:在权限检查中要忽略的路由列表。
如何使用 ACL?
只需将 dynamicAcl 中间件添加到您的路由中。
现在您将在
localhost:8000/admin/roles/create
上看到带有 dynamicAcl 中间件的路由列表。此外,此中间件将检查您对当前路由的访问权限。
访问角色
您可以使用 Role 模型编写查询以获取角色列表,并在您的管理员/用户 CRUD 视图中使用它。
use Iya30n\DynamicAcl\Models\Role;
同步用户角色
您可以使用 sync
、attach
和 detach
方法来分配用户角色。
$user->roles()->sync([1, 2, 3,...]);
获取用户角色
$user->roles()->get();
手动检查用户访问权限
在用户上调用 hasPermission
方法并传递路由名称
auth()->user()->hasPermission('admin.articles.create');
检查用户是否有权限访问实体的任何路由
auth()->user()->hasPermission('admin.articles.*')
您还可以检查用户是否可以访问其实体
$user->hasPermission('admin.articles.update', $article); // Or with a custom relation_key (default is 'user_id') $user->hasPermission('admin.articles.update', $article, 'owner_id');
检查所有权
手动检查用户是否是实体的所有者
$user->isOwner($article); // Or with a custom relation_key $user->isOwner($article, 'owner_id'); // Or pass it as ['model' => id] $user->isOwner(['article' => $article->id]); // Or with a custom model path $user->isOwner(['App\\Article' => $article->id]);
动态策略
使用动态策略也很简单。只需将 authorize 中间件添加到您的路由中。您可以将外键作为参数传递(默认为 user_id)。此中间件检查实体的外键。
注意:在控制器上使用路由模型绑定是必要的。