geniv/nette-identity-authorizator

Nette 框架的身份授权类

v1.2.13 2019-04-10 20:43 UTC

README

安装

$ composer require geniv/nette-identity-authorizator

"geniv/nette-identity-authorizator": "^1.2"

require

"php": ">=7.0",
"nette/nette": ">=2.4",
"dibi/dibi": ">=3.0"

包含在应用程序中

可用的源驱动器

  • Identity\Authorizator\Drivers\ArrayDriver (数组配置)
  • Identity\Authorizator\Drivers\NeonDriver (neon 文件)
  • Identity\Authorizator\Drivers\DibiDriver (dibi + 缓存)

策略

  • allow - 默认拒绝,允许部分
  • deny - 默认允许,拒绝部分
  • none - 默认允许,忽略部分

neon 配置

# identity authorizator
identityAuthorizator:
#   debugger: true
#   autowired: true
#   policy: allow
#   driver: Identity\Authorizator\Drivers\ArrayDriver([],[],[],[])
#   driver: Identity\Authorizator\Drivers\NeonDriver(%appDir%/acl.neon)
    driver: Identity\Authorizator\Drivers\DibiDriver(%tablePrefix%)

授权器接口:IIdentityAuthorizator

neon 配置扩展

extensions:
    identityAuthorizator: Identity\Authorizator\Bridges\Nette\Extension

演示者

use AuthorizatorTrait;      // trait for add ACL from Tracy


$acl = $this->user->getAuthorizator();
$acl->isAllowed('role', 'resource', 'privilege');

$this->user->isAllowed('resource', 'privilege');

用法

<span n:if="$user->isAllowed('resource', 'privilege')">...</span>

基于安全演示者的通用用法

$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
}