vendor/sulu/sulu/src/Sulu/Bundle/PageBundle/Controller/WebspaceController.php line 37

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of Sulu.
  4.  *
  5.  * (c) Sulu GmbH
  6.  *
  7.  * This source file is subject to the MIT license that is bundled
  8.  * with this source code in the file LICENSE.
  9.  */
  10. namespace Sulu\Bundle\PageBundle\Controller;
  11. use FOS\RestBundle\Context\Context;
  12. use FOS\RestBundle\View\ViewHandlerInterface;
  13. use HandcraftedInTheAlps\RestRoutingBundle\Routing\ClassResourceInterface;
  14. use Sulu\Bundle\AdminBundle\Controller\AdminController;
  15. use Sulu\Bundle\PageBundle\Admin\PageAdmin;
  16. use Sulu\Component\Rest\AbstractRestController;
  17. use Sulu\Component\Rest\ListBuilder\CollectionRepresentation;
  18. use Sulu\Component\Rest\RequestParametersTrait;
  19. use Sulu\Component\Security\Authorization\PermissionTypes;
  20. use Sulu\Component\Security\Authorization\SecurityCheckerInterface;
  21. use Sulu\Component\Security\Authorization\SecurityCondition;
  22. use Sulu\Component\Security\SecuredControllerInterface;
  23. use Sulu\Component\Webspace\Manager\WebspaceManagerInterface;
  24. use Symfony\Component\HttpFoundation\Request;
  25. use Symfony\Component\HttpFoundation\RequestStack;
  26. use Symfony\Component\HttpFoundation\Response;
  27. @\trigger_error(
  28.     \sprintf(
  29.         'The "%s" class is deprecated since Sulu 2.0, use data from "%s" instead.',
  30.         WebspaceController::class,
  31.         AdminController::class
  32.     ),
  33.     \E_USER_DEPRECATED
  34. );
  35. /**
  36.  * @deprecated Deprecated since Sulu 2.0, use data from Sulu\Bundle\AdminBundle\Controller\AdminController::configAction
  37.  * Remember deleting the resource configuration from Sulu\Bundle\AdminBundle\DependencyInjection\SuluAdminExtension.
  38.  */
  39. class WebspaceController extends AbstractRestController implements ClassResourceInterfaceSecuredControllerInterface
  40. {
  41.     use RequestParametersTrait;
  42.     /**
  43.      * @var WebspaceManagerInterface
  44.      */
  45.     private $webspaceManager;
  46.     /**
  47.      * @var SecurityCheckerInterface
  48.      */
  49.     private $securityChecker;
  50.     /**
  51.      * @var RequestStack
  52.      */
  53.     private $requestStack;
  54.     public function __construct(
  55.         ViewHandlerInterface $viewHandler,
  56.         WebspaceManagerInterface $webspaceManager,
  57.         SecurityCheckerInterface $securityChecker,
  58.         RequestStack $requestStack
  59.     ) {
  60.         parent::__construct($viewHandler);
  61.         $this->webspaceManager $webspaceManager;
  62.         $this->securityChecker $securityChecker;
  63.         $this->requestStack $requestStack;
  64.     }
  65.     /**
  66.      * Returns webspaces.
  67.      *
  68.      * @return Response
  69.      */
  70.     public function cgetAction(Request $request)
  71.     {
  72.         $checkForPermissions $request->get('checkForPermissions'true);
  73.         $locale $this->getRequestParameter($request'locale'true);
  74.         $webspaces = [];
  75.         foreach ($this->webspaceManager->getWebspaceCollection() as $webspace) {
  76.             if ($checkForPermissions) {
  77.                 $securityContext $this->getSecurityContextByWebspace($webspace->getKey());
  78.                 $condition = new SecurityCondition($securityContext);
  79.                 if (!$this->securityChecker->hasPermission($conditionPermissionTypes::VIEW)) {
  80.                     continue;
  81.                 }
  82.             }
  83.             $webspaces[] = $webspace;
  84.         }
  85.         $context = new Context();
  86.         $context->setAttribute('locale'$locale);
  87.         $view $this->view(new CollectionRepresentation($webspaces'webspaces'));
  88.         $view->setContext($context);
  89.         return $this->handleView($view);
  90.     }
  91.     /**
  92.      * Returns webspace config by key.
  93.      *
  94.      * @param string $webspaceKey
  95.      *
  96.      * @return Response
  97.      */
  98.     public function getAction($webspaceKey)
  99.     {
  100.         return $this->handleView(
  101.             $this->view($this->webspaceManager->findWebspaceByKey($webspaceKey))
  102.         );
  103.     }
  104.     public function getSecurityContext()
  105.     {
  106.         $request $this->requestStack->getCurrentRequest();
  107.         $webspaceKey $request $request->get('webspaceKey') : null;
  108.         if (null !== $webspaceKey) {
  109.             return $this->getSecurityContextByWebspace($webspaceKey);
  110.         }
  111.         return null;
  112.     }
  113.     /**
  114.      * Returns security-context by webspace.
  115.      *
  116.      * @param string $webspaceKey
  117.      *
  118.      * @return string
  119.      */
  120.     private function getSecurityContextByWebspace($webspaceKey)
  121.     {
  122.         return PageAdmin::SECURITY_CONTEXT_PREFIX $webspaceKey;
  123.     }
  124. }