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