codegor / laravel-acl
基于Laravel路由表,通过资源Laravel ACL和模型ACL状态进行资源控制。代码简单,易于控制
v0.6
2018-06-30 00:12 UTC
Requires
- php: >=7.0
- laravel/framework: 5.6.*
This package is auto-updated.
Last update: 2024-09-17 00:51:44 UTC
README
Laravel ACL为Laravel 5.6的内置认证系统添加基于角色的权限。ACL中间件保护路由。当使用Laravel作为服务器API(带有资源控制器)时非常有用。当前的ACL可以控制资源的状态(如果需要控制哪些操作需要拒绝,这非常有用)。如果模型有一些状态,例如,模型有状态'active',你想要拒绝操作'update',则可以使用此ACL在配置文件中的状态字段中设置此操作(见下文)。
目录
要求
- 此包需要PHP 7.0+
入门
- 在
composer.json
中要求此包,并使用composer update
更新您的依赖项。
"require": {
...
"codegor/laravel-acl": "~0.5",
...
},
- 将包添加到
config/app.php
中的应用程序服务提供者中。
'providers' => [ Illuminate\Auth\AuthServiceProvider::class, Illuminate\Broadcasting\BroadcastServiceProvider::class, ... Codegor\Acl\Providers\AclServiceProvider::class, ], 'aliases' => [ 'App' => Illuminate\Support\Facades\App::class, 'Artisan' => Illuminate\Support\Facades\Artisan::class, ... 'Acl' => Codegor\Acl\Facades\Acl::class ]
- 将包配置发布到您的应用程序中。如果默认迁移在包的根目录的migrations文件夹中。
$ php artisan vendor:publish --provider="Codegor\Acl\Providers\AclServiceProvider"
- 将中间件添加到
app/Http/Kernel.php
中。
protected $routeMiddleware = [ .... 'acl' => 'Codegor\Acl\Http\Middleware\Acl', ];
- 将Acl trait添加到您的
User
模型中。
use Codegor\Acl\Traits\Acl; class User extends Model { use ... Acl; }
- 在config/acl.php中配置您的acl(详细信息请参阅config/acl.php文件中的注释)。
return [ 'config' => [ 'role_source' => 'config' // 'config' || 'DB' ... ], 'permissions' => [ 'admin' => (object) [ 'role' => 'admin', 'type' => 'all allow', // or 'all deny' 'list' => [] // if in table - need in json formate ], ... ] 'state' => [ 'admins' => [ // resourse 'active' =>[ // status #1 'activate' ], 'inactive' =>[ // status #2 'update' ], ], ... ] ];
这样就完成了!
要创建权限列表,您可以执行artisan命令'php artisan route:list',您可以看到您的路由表和列路由名称,这是您需要在权限列表中列出的列(在中间件列中,您可以查看您的ACL中间件与其他中间件)。ACL只有在应用了'acl'中间件时才会工作。(对于内部需求,您可以使用Acl::getPointsApp(),它返回所有权限的列表)