aginev / acl
Laravel v5.0 的 ACL 包
Requires
- php: >=5.5.9
- illuminate/contracts: 5.1.*
- illuminate/database: 5.1.*
- illuminate/foundation: 5.1.*
- illuminate/html: 5.*
- illuminate/routing: 5.1.*
- illuminate/support: 5.1.*
- illuminate/view: 5.1.*
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"