geniv / nette-authorizator
This package is abandoned and no longer maintained.
No replacement package was suggested.
Authorizator extension for Nette Framework
v1.1.7
2018-01-27 21:12 UTC
Requires
- php: >=5.6.0
- dibi/dibi: >=3.0.0
- nette/nette: >=2.4.0
This package is not auto-updated.
Last update: 2020-01-24 16:42:32 UTC
README
Installation
$ composer require geniv/nette-authorizator
or
"geniv/nette-authorizator": ">=1.0.0"
require:
"php": ">=5.6.0", "nette/nette": ">=2.4.0", "dibi/dibi": ">=3.0.0"
Include in application
available source drivers:
- Neon (neon filesystem) - support form
- Dibi (dibi + cache) - support form
- Array (neon configure)
policy:
allow
- all is deny, allow partdeny
- all is allow, deny partnone
- all is allow, ignore part
neon configure:
# acl
authorizator:
# autowired: false # default null, true|false|self|null
policy: allow # allow (all is deny, allow part) | deny (all is allow, deny part) | none (all is allow, ignore part)
source: "Neon"
path: %appDir%/components/test/nette-authorizator/sql/acl.neon
# source: "Dibi"
# tablePrefix: %tablePrefix%
# source: "Array"
# role:
# - guest
# - moderator
# - admin
# resource:
# - article
# - comment
# - poll
# privilege:
# - show
# - insert
# - update
# - delete
# acl:
# moderator:
# article: [show, insert, update]
# admin: all
neon configure extension:
extensions:
authorizator: Authorizator\Bridges\Nette\Extension
presenters:
$acl = $this->user->getAuthorizator(); $acl->isAllowed('guest', 'sekce-forum', 'zobrazit'); $this->user->isAllowed('sekce-forum', 'zobrazit');
usage:
<span n:if="$user->isAllowed('sekce-forum', 'zobrazit')">...</span>
All method onSuccess callback are default defined like $this->redirect('this');
presenters form:
use Authorizator\Forms\AclForm; use Authorizator\Forms\PrivilegeForm; use Authorizator\Forms\ResourceForm; use Authorizator\Forms\RoleForm; ... abstract class BasePresenter extends Presenter { use AutowiredComponent; ... protected function createComponentRoleForm(RoleForm $roleForm): RoleForm { //$roleForm->setTemplatePath(path); //$roleForm->onSuccess[] = function (array $values) { }; //$roleForm->onError[] = function (array $values, Exception $e = null) { }; return $roleForm; } protected function createComponentResourceForm(ResourceForm $resourceForm): ResourceForm { //$resourceForm->setTemplatePath(path); //$resourceForm->onSuccess[] = function (array $values) { }; //$resourceForm->onError[] = function (array $values, Exception $e = null) { }; return $resourceForm; } protected function createComponentPrivilegeForm(PrivilegeForm $privilegeForm): PrivilegeForm { //$privilegeForm->setTemplatePath(path); //$privilegeForm->onSuccess[] = function (array $values) { }; //$privilegeForm->onError[] = function (array $values, Exception $e = null) { }; return $privilegeForm; } protected function createComponentAclForm(AclForm $aclForm): AclForm { //$aclForm->setTemplatePath(path); //$aclForm->onSuccess[] = function (array $values) { }; //$aclForm->onError[] = function (array $values) { }; return $aclForm; }
generic usage on security base presenter:
$acl = $this->user->getAuthorizator(); // manual set allowed with internal resolve policy $acl->setAllowed(IAuthorizator::ALL, 'Homepage'); $acl->setAllowed(IAuthorizator::ALL, 'Login'); if (!$this->user->isAllowed($this->name, $this->action)) { // NOT ALLOWED }
form not required for correct function ACL.
Available form: role, resource, privilege and acl.
usage form:
{control roleForm} {control resourceForm} {control privilegeForm} {control aclForm}