codegor/laravel-acl

基于Laravel路由表,通过资源Laravel ACL和模型ACL状态进行资源控制。代码简单,易于控制

v0.6 2018-06-30 00:12 UTC

This package is auto-updated.

Last update: 2024-09-17 00:51:44 UTC


README

Laravel Source Build Status License Total Downloads

Laravel ACL为Laravel 5.6的内置认证系统添加基于角色的权限。ACL中间件保护路由。当使用Laravel作为服务器API(带有资源控制器)时非常有用。当前的ACL可以控制资源的状态(如果需要控制哪些操作需要拒绝,这非常有用)。如果模型有一些状态,例如,模型有状态'active',你想要拒绝操作'update',则可以使用此ACL在配置文件中的状态字段中设置此操作(见下文)。

目录

要求

  • 此包需要PHP 7.0+

入门

  1. composer.json中要求此包,并使用composer update更新您的依赖项。
"require": {
...
"codegor/laravel-acl": "~0.5",
...
},
  1. 将包添加到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
]
  1. 将包配置发布到您的应用程序中。如果默认迁移在包的根目录的migrations文件夹中。
$ php artisan vendor:publish --provider="Codegor\Acl\Providers\AclServiceProvider"
  1. 将中间件添加到app/Http/Kernel.php中。
protected $routeMiddleware = [

....
'acl' => 'Codegor\Acl\Http\Middleware\Acl',

];
  1. 将Acl trait添加到您的User模型中。
use Codegor\Acl\Traits\Acl;

class User extends Model
{
use ... Acl;
}
  1. 在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(),它返回所有权限的列表)