aginev/acl

此包已被废弃,不再维护。未建议替代包。

Laravel v5.0 的 ACL 包

1.1.5 2018-03-22 08:57 UTC

This package is auto-updated.

Last update: 2021-03-01 00:08:12 UTC


README

基于 Laravel 5.0 的访问控制列表实现。为 Laravel 5 内置认证提供角色和权限。

特性

  • 角色的 CRUD 操作
  • 权限的 CRUD 操作
  • 用于检查用户权限的路由中间件
  • Artisan 命令,用于解析和添加新创建的 ACL 相关模块
  • Composer 可安装
  • PSR4 自动加载
  • PSR2 代码格式化

要求

仅适用于 Laravel 框架!此包需要 Glyph 图标(http://glyphicons.com/)。

"require": {
	"php": ">=5.5.9",
	"illuminate/foundation": "5.*",
	"illuminate/contracts": "5.*",
	"illuminate/database": "5.*",
	"illuminate/routing": "5.*",
	"illuminate/support": "5.*",
	"illuminate/view": "5.*",
	"illuminate/html": "5.*"
}

安装

在 composer.json 文件中要求包,如下所示

{
    "require": {
        "aginev/acl": "1.1.*"
    }
}

告诉 composer 更新您的依赖关系

composer update

或在终端中

composer require aginev/acl:1.1.*

将服务提供者添加到 config/app.php 中,如下所示

Aginev\Acl\AclServiceProvider::class,

发布包资源

php artisan vendor:publish --provider="Aginev\Acl\AclServiceProvider" --tag="public"

将包 CSS 添加到您的布局中

<link href="{{ asset('/vendor/acl/css/style.css') }}" rel="stylesheet">

将包 JavaScript 添加到您的布局中。

  • script.js 用于轻松定义角色权限
  • restful.js 用于执行 RESTful 删除操作

如果您已经有了自己的实现,请随时创建自己的实现。

<script src="{{ asset('/vendor/acl/js/script.js') }}"></script>
<script src="{{ asset('/vendor/acl/js/restful.js') }}"></script>

将 Laravel csrf 令牌作为 JavaScript 对象添加。如果使用 restful.js,则需要此操作。

<script>
	Laravel = {
		_token: '{{ csrf_token() }}'
	};
</script>

运行包迁移。您需要迁移您的用户表。

php artisan migrate --path="vendor/aginev/acl/src/Database/Migrations"

种子角色表。默认情况下,将创建两个角色-无权限和管理员。无权限角色将被视为默认角色。您无法删除此角色。当删除其他角色时,使用已删除角色的所有用户将被分配到无权限角色。默认情况下,种子将添加所有请求 ACL 的资源并将它们分配给管理员角色。

php artisan db:seed --class="Aginev\Acl\Database\Seeds\RolesTableSeeder"

将一个或多个用户修改为具有有效的 role_id。默认情况下,添加的外键 role_id 将具有 NULL 值。

将 ACL 用户特质添加到您的 User 模型中。它将为角色和用户表之间的关系添加定义;

use \Aginev\Acl\Http\Traits\User;

到这一点,您已经启动了 ACL。在 /admin/role 和 /admin/permission 处访问角色和权限的 CRUD 操作

/admin/role

/admin/permission

如果不满意路由前缀,请发布包配置并编辑 routes_prefix 价值以供自己使用或留空以不使用前缀。

php artisan vendor:publish --provider="Aginev\Acl\AclServiceProvider" --tag="config"

编辑路由前缀

...
// Package route prefix. Set to blank for no prefix
'routes_prefix' => 'what-ever-you-want',
...

包在索引视图中具有分页。如果您需要每页更多项目,请编辑 config 中的 per_page_results(默认为 25)值。

...
// Pagination per page results
'per_page_results' => 50,
...

要定义自定义错误消息格式,请编辑 config 中的 validation_errors_format 值。此格式将仅适用于您的控制器扩展 ACL 基础控制器 (\Aginev\Acl\Http\Controllers\AclController) 的情况。

// validation errors format. Set to blank for default
'validation_errors_format' => '<label class="error text-danger">:message</label>',

最重要的是...您希望控制器依赖于 ACL。有两种选择。

1.在控制器构造函数中添加 ACL 中间件。

$this->middleware('acl');

2.routes.php 中的路由组

Route::group(['middleware' => 'acl'], function () {
	Route::get('group', 'SomeController@index');
});

定义了 ACL 受保护的控制器后,您可以使用 artisan 命令添加权限表中的所有路由

php artisan acl:fill-permissions

如果您想为角色分配新权限,可以这样做

php artisan acl:fill-permissions --assign-to-roles=2

其中 2 是 role_id。如果您想传递多个角色,请使用逗号分隔的列表

php artisan acl:fill-permissions --assign-to-roles=1,2

修改默认视图

要修改默认视图,您需要先发布它们

php artisan vendor:publish --provider="Aginev\Acl\AclServiceProvider" --tag="views"

其他

发布迁移

php artisan vendor:publish --provider="Aginev\Acl\AclServiceProvider" --tag="migrations"

发布种子

php artisan vendor:publish --provider="Aginev\Acl\AclServiceProvider" --tag="seeds"

许可证

MIT - https://open-source.org.cn/licenses/MIT