PHP code example of ddjuly / abac

1. Go to this page and download the library: Download ddjuly/abac library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

ddjuly / abac example snippets


\Abac\AbacServiceProvider::class,

'Abac' => \Abac\AbacFacade::class,

'permission' => \Abac\Middleware\AbacPermission::class,
'role' => \Abac\Middleware\AbacRole::class,
'ability' => \Abac\Middleware\AbacAbility::class,

// 路由
Route::get('/home', 'HomeController@index')->name('home')->middleware("permission:权限名");
Route::get('/home', 'HomeController@index')->name('home')->middleware("role:角色名");
Route::get('/home', 'HomeController@index')->name('home')->middleware("ability:权限名");

Route::group(['prefix' => 'prefix'],function(){
    if (strlen($_SERVER['REQUEST_URI']) < 4 || strpos($_SERVER['REQUEST_URI'], '/prefix') === false) {
        return;
    }

    $space = 'Mgr';

    $arr = explode('/',explode('?',$_SERVER['REQUEST_URI'])[0]);
    $index = '/' . $arr[2] . '/' . $arr[3];

    $reflectionClass = new ReflectionClass("App\Http\Controllers\{$space}\\". $arr[2] ."Controller");
    $reflectionMethod = $reflectionClass->getMethod($arr[3]);
    $doc = $reflectionMethod->getDocComment();
    preg_match('/@permission(.*?)\n/', $doc, $permission);

    if ($permission && isset($permission[1])) {
        $permission = trim($permission[1]);
        if ($permission) {
            Route::match(['get', 'post'], $index, value(function() use ($arr){
                return "{$space}\\{$arr[2]}Controller@{$arr[3]}";
            }))->middleware("permission:{$permission}");
        } else {
            Route::match(['get', 'post'], $index, value(function() use ($arr){
                return "{$space}\\{$arr[2]}Controller@{$arr[3]}";
            }));
        }
    } else {
        Route::match(['get', 'post'], $index, value(function() use ($arr){
            return "{$space}\\{$arr[2]}Controller@{$arr[3]}";
        }));
    }

});

/**
 * @permission 供应商管理
 * @return string
 */
public function saveDirectProduct() {
    $field = $this->getField([
        'direct_link' => '

\Abac::addRole(角色名);

\Abac::addPermission(权限名);

\Abac::addPermission2Role(角色id(int)|角色名(string), 权限id(int)|权限名(string));

\Abac::addUser2Permission(用户id, 权限id(int)|权限名(string));

\Abac::delPermission(权限id|权限名);

\Abac::delRole(角色id|角色名);

\Abac::removePermissionOfRole(权限i|d权限名, 角色id|角色名);

\Abac::removePermissionOfUser(用户id, 权限id|权限名);

\Abac::removeRoleOfUser(用户id, 角色id|角色名);

@role('角色名1|角色名2', true)
    {{'打工是不可能打工的,这辈子不可能打工'}}
@endrole

@permission('权限名')
    {{'做生意又不会,只能靠偷这种东西,才能维持现在的生活'}}
@endpermission

@ability('角色名', '权限名', false)
    {{'为什么不去打工,有手有脚的'}}
@endability

php artisan abac.create-table