aldozumaran / acl
此包的最新版本(v1.1.3)没有可用的许可证信息。
Laravel 5.2 ACL
v1.1.3
2016-07-08 14:36 UTC
Requires
- laravel/framework: ^5.2
README
Laravel 5.2 Acl
安装
添加到 composer.json
"aldozumaran/acl": "1.*"
运行 "composer update"
添加到 config/app.php 提供者
AldoZumaran\Acl\AclServiceProvider::class,
添加到 config/app.php 别名
'Acl' => AldoZumaran\Acl\Facades\Acl::class,
在 kernel.php 中添加中间件
'acl' => \AldoZumaran\Acl\Http\Middleware\AclMiddleware::class,
在 User 模型中添加此特性
use AldoZumaran\Acl\Traits\AclUserTrait;
class User extends Authenticatable
{
use AclUserTrait;
发布视图、模型...
php artisan vendor:publish
更改 .env 文件
CACHE_DRIVER=array
并创建 acl 表
/*
//Optional: use seed (AclTableSeeder)
// Create default permissions (read, update, create, destroy),
// Create super-admin role
// Create test route
// Create default user
// Add permissions to default user for test route
添加到 database/seeds/DatabaseSeeder.php
$this->call(AclTableSeeder::class);
添加到 database/factories/ModelFactory.php
$factory->define(App\Models\Acl\Role::class, function (Faker\Generator $faker) {
return [
'code' => $faker->word,
'name' => $faker->name,
'description' => $faker->paragraph,
];
});
$factory->define(App\Models\Acl\Permission::class, function (Faker\Generator $faker) {
return [
'code' => $faker->word,
'name' => $faker->name,
'description' => $faker->paragraph,
];
});
$factory->define(App\Models\Acl\Section::class, function (Faker\Generator $faker) {
return [
'code' => $faker->word,
'name' => $faker->name,
'description' => $faker->paragraph,
];
});
$factory->define(App\Models\Acl\PermissionRoleSection::class, function (Faker\Generator $faker) {
return [
'permission_id' => 1,
'role_id' => 1,
'section_id' => 1,
];
});
$factory->define(App\Models\Acl\PermissionSectionUser::class, function (Faker\Generator $faker) {
return [
'permission_id' => 1,
'section_id' => 1,
'user_id' => 1,
];
});
*/
composer dump-autoload
php artisan migrate --seed
添加 ACL 路由和测试路由
Route::group(['middleware' => ['web']], function () {
\Acl::routes();
Route::group(['middleware' => ['auth','acl']], function () {
Route::resource('test/custom','CustomController'); // TEST ROUTE
});
});
config/acl.php 中的默认配置
//Set your named routes <b>permissions</b> (route actions), defaults are:
'permissions' => [
'index' => 'read',
'create' => 'create',
'store' => 'create',
'show' => 'read',
'edit' => 'update',
'update' => 'update',
'destroy' => 'destroy',
'read_update' => ['read','update'],
],
//If permission not exists, redirect to index
'redirect_to_index' => true,
// L5.2 Guard auth
'guard' => 'web',
//Set the auth model namespace
'user' => '\App\User',
//route acl prefix . EX. admin/ set admin
'route_prefix' => '',
// acl urls
'routes' => [
'roles' => 'acl/roles',
'users' => 'acl/users',
'sections' => 'acl/sections',
'permissions' => 'acl/permissions',
'index' => 'acl',
],
// roles with access to acl
'granted_roles' => '', // 'admin' or 'admin,webmaster' or ['admin','webmaster']
// super admin role
'role_admin' => 'super-admin',
'email_admin' => 'i@am.me',
// http status error
'http_status' => 403,
用法
转到 /acl/(默认配置)
此插件与命名路由兼容
创建一个 TEST ROUTE 控制器
php artisan make:controller CustomController --resource
// Route::resource('test/custom','CustomController');
生成 test.custom.index, test.custom.create, test.custom.store, ...
在部分:/acl/sections(前缀资源控制器)或(使用 AclTableSeeder)中添加
test.custom
在 /acl/permissions 或(使用 AclTableSeeder)中添加权限
read, update, create, destroy
在 /acl/roles 或(使用 AclTableSeeder)中添加角色