vendor/nellapp/sdk-bundle/src/Permission/Routing/Loader/ChannelUserPermissionResourceCrudLoader.php line 48

Open in your IDE?
  1. <?php
  2. namespace Nellapp\Bundle\SDKBundle\Permission\Routing\Loader;
  3. use Nellapp\Bundle\SDKBundle\Permission\ChannelUserPermissionManager;
  4. use Nellapp\Bundle\SDKBundle\Permission\Controller\Crud\DeleteAction;
  5. use Nellapp\Bundle\SDKBundle\Permission\Controller\Crud\EditAction;
  6. use Nellapp\Bundle\SDKBundle\Permission\Controller\Crud\IndexAction;
  7. use Nellapp\Bundle\SDKBundle\Permission\Controller\Crud\NewAction;
  8. use Nellapp\Bundle\SDKBundle\Permission\Entity\ChannelResourceInterface;
  9. use Symfony\Component\Config\Loader\Loader;
  10. use Symfony\Component\Routing\Route;
  11. use Symfony\Component\Routing\RouteCollection;
  12. class ChannelUserPermissionResourceCrudLoader extends Loader
  13. {
  14.     public function __construct(
  15.         private ChannelUserPermissionManager $channelUserPermissionManager,
  16.         string $env null,
  17.     ) {
  18.         parent::__construct($env);
  19.     }
  20.     public function load($resourcestring $type null): RouteCollection
  21.     {
  22.         if (!class_exists($resource)) {
  23.             throw new \LogicException(sprintf(
  24.                 'The given resource "%s" for "channel_user_permission_resource_crud" must be an existing class.',
  25.                 $resource,
  26.             ));
  27.         }
  28.         if (!is_subclass_of($resourceChannelResourceInterface::class)) {
  29.             throw new \LogicException(sprintf(
  30.                 'The given resource "%s" for "channel_user_permission_resource_crud" must implements %s',
  31.                 $resource,
  32.                 ChannelResourceInterface::class
  33.             ));
  34.         }
  35.         if (null === $resource::getPermissionResourceClass()) {
  36.             throw new \LogicException(sprintf(
  37.                 'No permission class defined for resource "%s".',
  38.                 $resource::class,
  39.             ));
  40.         }
  41.         // Throw exception if cannot find valid repositories.
  42.         $repository $this->channelUserPermissionManager->getChannelPermissionResourceRepository($resource::getPermissionResourceClass());
  43.         if (!$repository) {
  44.             throw new \LogicException(sprintf(
  45.                 'Cannot find any repository for permission "%s".',
  46.                 $resource::getPermissionResourceClass(),
  47.             ));
  48.         }
  49.         $routes = new RouteCollection();
  50.         $permissionClass $resource::getPermissionResourceClass();
  51.         // Index route.
  52.         $routes->add('index', new Route('', [
  53.             '_controller' => IndexAction::class,
  54.             '_permission_class' => $permissionClass,
  55.         ], methods: ['GET''POST']));
  56.         // New route.
  57.         $routes->add('new', new Route('/new/{channelUserDataId}', [
  58.             '_controller' => NewAction::class,
  59.             '_permission_class' => $permissionClass,
  60.         ], methods: ['GET''POST']));
  61.         // Edit route.
  62.         $routes->add('edit', new Route('/edit/{channelUserDataId}', [
  63.             '_controller' => EditAction::class,
  64.             '_permission_class' => $permissionClass,
  65.         ], methods: ['GET''POST']));
  66.         // Delete route.
  67.         $routes->add('delete', new Route('/delete/{channelUserDataId}', [
  68.             '_controller' => DeleteAction::class,
  69.             '_permission_class' => $permissionClass,
  70.         ], methods: ['GET']));
  71.         $routes->addPrefix('/{resourceId}/permissions');
  72.         return $routes;
  73.     }
  74.     public function supports($resourcestring $type null): bool
  75.     {
  76.         return 'channel_user_permission_resource_crud' === $type;
  77.     }
  78. }