weirdo / dynamic-acl
此包最新版本(v1.0.8)没有可用的许可证信息。
v1.0.8
2024-06-19 01:37 UTC
Requires
- php: ^8.0
- javoscript/laravel-macroable-models: ^1.0
- laravel/framework: 9.*|10.*
Requires (Dev)
- mockery/mockery: ^1.5
- orchestra/testbench: ^7.3
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-19 02:12:29 UTC
README
Dynamic ACL 是一个处理 Laravel 应用程序访问控制级别的包。它运行速度快,使用简单。安装并享受吧 ;)
特性
安装
先决条件
- 创建您的身份验证(基于会话)系统。
- 为您的路由定义一个名称。
composer require weirdo/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 Weirdo\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)。此中间件检查实体的外键。
注意:在控制器上使用路由模型绑定是必要的。