/**
  * Runs security to check, if user is authorized correctly
  *
  * @param SecurityCommand $securityCommand
  *
  */
 public function authorize(SecurityCommand $securityCommand)
 {
     /** @var UserFactory $userFactory */
     $userFactory = $this->container->getUserFactory($securityCommand->userFactory());
     $user = $userFactory->create();
     /** @var ResourceFactory $resourceFactory */
     if (!is_null($securityCommand->resourceFactory())) {
         $resourceFactory = $this->container->getResourceFactory($securityCommand->resourceFactory());
         $resource = $resourceFactory->create();
     }
     /** @var SecurityType $securityType */
     $securityType = $this->container->getSecurityType($securityCommand->securityType());
     $policiesList = array();
     foreach ($securityCommand->policies() as $policy) {
         $policiesList[] = $this->container->getSecurityPolicy($policy);
     }
     $expression = $securityCommand->expression() ? new Expression($securityCommand->expression()) : new EmptyExpression();
     $securityType->execute($expression, $user, isset($resource) ? $resource : null, $policiesList);
 }