crebs86/acl-laravel

一个简单且完整的具有ACL功能的Laravel控制面板 >= 5.5

0.9 2018-07-07 11:06 UTC

This package is auto-updated.

Last update: 2024-09-14 22:56:30 UTC


README

在全新的Laravel ">=5.5.*" 安装上。

composer require crebs86/acl-laravel:0.9

现在运行以下代码

步骤 1) 发布视图和迁移

php artisan vendor:publish --tag=first --force 

步骤 2) 迁移数据库并播种

composer dumpautoload
php artisan migrate
php artisan db:seed

步骤 3) 发布类

php artisan vendor:publish --tag=second --force

现在在 app/Http/Kernel.php 上注册中间件

    protected $routeMiddleware = [
    //... laravel codes
        'access' => \Crebs86\Acl\Middleware\Access::class,
        'active' => \Crebs86\Acl\Middleware\Activated::class,
    ];

为了保护你的控制器,在

你可以在控制器构造函数中调用中间件方法。

class MyExemploController extends Controller{
        public function __construct()
        {
            $this->middleware('auth');      //if auth is necessary
            $this->middleware('access');    //if email verification is necessary
            $this->middleware('active');    //if active account is necessary
        }
}

保护方法

方法 Acl::can(array|string, boolean);

第一个参数:数组或字符串,无默认值;设置所需权限。

第二个参数:布尔值;默认true。如果需要保护的方法需要超级管理员用户。

use Crebs86\Acl\Facades\Acl;
    
class MyExempleController extends Controller{
        
        public function myMethod()
        {
            Acl::can('permission_name', false);
            //continue...
        }
        
        public function methodRequireSuperAdminUser()
        {
            Acl::can('permission_name', true);  //for require only super-admin users can access the method define second parameter like true
            //continue...
        }
        
        public function multiPermission()
        {
              Acl::can(['permission_name', 'other_permission'], false);  //for multi permissions set permissions like a array
              //continue...
        }
}

同样,你可以使用辅助函数

class MyExempleController extends Controller{
        
        public function myMethod()
        {
            have('permission_name', false);
            //continue...
        }
        
        public function methodRequireSuperAdminUser()
        {
            if(can('permission_name', true)):
                //continue...
            else:
                abort(403,'Access Denied');
            endif    
        }
        
        public function multiPermission()
        {
              have(['permission_name', 'other_permission'], false);
              //continue...
        }
}

在Blade文件中

@if(can(['permission_name', 'other_permission'], false))
    <p>You can view this</p>
@else:
    <p>You don't have permission</p>
@endif

安装后

https:///login

电子邮件:super-admin@your.app

密码:crebsacl

你应该更改电子邮件地址和密码。

谢谢!

谢谢!