Neos\Flow\Security\Authorization\Privilege\PrivilegeTarget::createPrivilege PHP Метод

createPrivilege() публичный Метод

public createPrivilege ( string $permission, array $parameters = [] ) : Neos\Flow\Security\Authorization\Privilege\PrivilegeInterface
$permission string one of "GRANT", "DENY" or "ABSTAIN"
$parameters array Optional key/value array with parameter names and -values
Результат Neos\Flow\Security\Authorization\Privilege\PrivilegeInterface
    public function createPrivilege($permission, array $parameters = [])
    {
        $permission = strtolower($permission);
        if ($permission !== PrivilegeInterface::GRANT && $permission !== PrivilegeInterface::DENY && $permission !== PrivilegeInterface::ABSTAIN) {
            throw new SecurityException(sprintf('permission must be either "GRANT", "DENY" or "ABSTAIN", given: "%s"', $permission), 1401878462);
        }
        $privilegeParameters = [];
        foreach ($this->parameterDefinitions as $parameterDefinition) {
            $parameterName = $parameterDefinition->getName();
            if (!isset($parameters[$parameterName])) {
                throw new SecurityException(sprintf('The parameter "%s" is not specified', $parameterName), 1401794982);
            }
            $privilegeParameterClassName = $parameterDefinition->getParameterClassName();
            $privilegeParameters[$parameterName] = new $privilegeParameterClassName($parameterName, $parameters[$parameterName]);
        }
        $privilege = new $this->privilegeClassName($this, $this->matcher, $permission, $privilegeParameters);
        if (!$privilege instanceof PrivilegeInterface) {
            throw new SecurityException(sprintf('Expected instance of PrivilegeInterface, got "%s"', get_class($privilege)), 1395869340);
        }
        $privilege->injectObjectManager($this->objectManager);
        return $privilege;
    }

Usage Example

 /**
  * @return void
  */
 public function initialize()
 {
     if ($this->initialized) {
         return;
     }
     $this->initialized = true;
     $this->nodeContext = new $this->nodeContextClassName();
     $eelContext = new Context($this->nodeContext);
     $this->eelCompilingEvaluator = new CompilingEvaluator();
     $this->eelCompilingEvaluator->evaluate($this->getParsedMatcher(), $eelContext);
     $methodPrivilegeMatcher = $this->buildMethodPrivilegeMatcher();
     $methodPrivilegeTarget = new PrivilegeTarget($this->privilegeTarget->getIdentifier() . '__methodPrivilege', MethodPrivilege::class, $methodPrivilegeMatcher);
     $methodPrivilegeTarget->injectObjectManager($this->objectManager);
     $this->methodPrivilege = $methodPrivilegeTarget->createPrivilege($this->getPermission(), $this->getParameters());
 }