zf3belcebur / rbac
This package is abandoned and no longer maintained.
No replacement package was suggested.
Extended RBAC with Doctrine ORM
v1.0.0
2019-11-26 08:36 UTC
Requires
- php: ^7.1
- zendframework/zend-permissions-rbac: ^3.0
Suggests
- zf3belcebur/doctrine-orm-fast-api: Quickly create an automatic API CRUD with your Doctrine ORM connection
- zf3belcebur/doctrine-orm-resources: DoctrineORM Resources to ZF3
- zf3belcebur/materialize-css-helper: MaterializeCss Helper integration to ZF3
- zf3belcebur/mongodb-logger: MongoDb Logger integration to ZF3
- zf3belcebur/mvc-basic-tools: ZF3 tools for controllers,views,helpers, plugins and more ...
This package is auto-updated.
Last update: 2022-08-26 14:53:45 UTC
README
Extended RBAC with Doctrine ORM
See
- https://packagist.org/explore/?query=zf3belcebur
- https://olegkrivtsov.github.io/using-zend-framework-3-book/html/
Installation
Installation of this module uses composer. For composer documentation, please refer to getcomposer.org.
composer require zf3belcebur/rbac
Then add ZF3Belcebur\Rbac
to your config/application.config.php
.
Default Config
<?php 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, ], ], ], ]; ?>
Config
Default Const
<?php use ZF3Belcebur\Rbac\Module;Module::RBAC_PUBLIC_ACCESS = [ 'actions' => '*', 'allow' => '*', 'methods' => '*', ]; Module::RBAC_LOGGED_IN_ACCESS = [ 'actions' => '*', 'allow' => '@', 'methods' => '*', ]; ?>
Examples
<?php 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 ]], ], ] ], ] ]; ?>
Entities
ZF3Belcebur\Rbac\Entity\Permission
ZF3Belcebur\Rbac\Entity\Role
Entity Traits
Use with your User Entity
ZF3Belcebur\Rbac\EntityTrait\UserRole
ViewHelper
<?php /** @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'); } ?>
PluginController
<?php /** @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'); } ?>