iya30n / dynamic-acl

此包的最新版本(1.1.0)没有提供许可证信息。

1.1.0 2023-06-21 09:14 UTC

This package is auto-updated.

Last update: 2024-09-21 12:03:24 UTC


README

Dynamic ACL 是一个处理 Laravel 应用程序访问控制级别的包。它运行速度快,使用简单。安装并享受吧 ;)

功能

  • 检查权限:在管理员权限上动态检查路由。
  • 简单策略:检查实体上的 user_id(如果管理员有访问权限)。

安装

先决条件

  • 构建你的基于会话的认证系统。
  • 为你的路由定义一个名称。
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;

同步用户角色

您可以使用 syncattachdetach 方法来分配用户角色。

$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)。此中间件检查实体的外键。

注意:在控制器上使用路由模型绑定是必要的。