PHP code example of zf3belcebur / rbac
1. Go to this page and download the library: Download zf3belcebur/rbac 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/ */
zf3belcebur / rbac example snippets
use Zend\Http\PhpEnvironment\Response;use ZF3Belcebur\Rbac\Module;use ZF3Belcebur\Rbac\Resource\RbacManager;return [
Module::CONFIG_KEY => [
'access_filter' => [
'options' => [
'mode' => 'restrictive', // permissive
'filter_identity' => static function ($identity) {
return $identity; // Customize your identity to compare with config
},
],
],
'assertions' => [
// YOUR_CUSTOM_ASSERTION_CLASS,
// YOUR_OTHER_CUSTOM_ASSERTION_CLASS,
],
'redirect' => [
RbacManager::AUTH_REQUIRED => [
'name' => '',
'params' => [],
'options' => [],
'http_status_code' => Response::STATUS_CODE_302,
],
RbacManager::ACCESS_DENIED => [
'name' => '',
'params' => [],
'options' => [],
'http_status_code' => Response::STATUS_CODE_303,
],
],
],
];
use ZF3Belcebur\Rbac\Module;Module::RBAC_PUBLIC_ACCESS = [
'actions' => '*',
'allow' => '*',
'methods' => '*',
];
Module::RBAC_LOGGED_IN_ACCESS = [
'actions' => '*',
'allow' => '@',
'methods' => '*',
];
use Application\Controller\ApiController;use Application\Controller\DashboardController;use Application\Controller\IndexController;use Application\Controller\PublicController;use ZF3Belcebur\Rbac\Module;return [
Module::CONFIG_KEY => [
'access_filter' => [
'options' => [
'mode' => 'restrictive' // restrictive o permissive
],
'controllers' => [
IndexController::class => [
// Allow anyone to visit "index" and "about" actions
['actions' => ['index', 'about'], 'allow' => '*'], // ONLY GET method
// Allow authorized users to visit "settings" action
['actions' => ['settings'], 'allow' => '@', 'methods'=>'*'], // All methods
// Allow authorized users to visit "settings" action
Module::RBAC_PUBLIC_ACCESS, // Other Public access
],
DashboardController::class => [
Module::RBAC_LOGGED_IN_ACCESS,
],
PublicController::class => [
Module::RBAC_PUBLIC_ACCESS,
],
// \Zend\Mvc\Controller\AbstractRestfulController
ApiController::class => [
['actions' => null, 'methods' => ['GET','DELETE','POST'], 'allow' => '@'],
['actions' => null, 'methods' => ['PUT'], 'allow' => [
'@' =>[1,2,3,4,5], // Users 1,2,3,4,5
'+' =>['a','b'] // Roles a and b
]],
],
]
],
]
];
/** @var Access $access */
use ZF3Belcebur\Rbac\View\Helper\Access;$access=$this->access();
if (!$access('profile.own.view', ['user'=>$user])) {
return $this->redirect()->toRoute('not-authorized');
}
/** @var AccessPlugin $access */
use ZF3Belcebur\Rbac\Controller\Plugin\AccessPlugin;$access=$this->access();
if (!$access('profile.own.view', ['user'=>$user])) {
return $this->redirect()->toRoute('not-authorized');
}