Spaces:
No application file
No application file
File size: 2,880 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
<?php
namespace Mautic\CoreBundle\Loader;
use Mautic\CoreBundle\CoreEvents;
use Mautic\CoreBundle\Event\RouteEvent;
use Mautic\CoreBundle\Helper\CoreParametersHelper;
use Symfony\Component\Config\Loader\Loader;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Routing\RouteCollection;
class RouteLoader extends Loader
{
public function __construct(
private EventDispatcherInterface $dispatcher,
private CoreParametersHelper $coreParameters
) {
}
/**
* Load each bundles routing.php file.
*
* @param mixed $resource
*
* @return RouteCollection
*
* @throws \RuntimeException
*/
public function load($resource, $type = null)
{
// Public
$event = new RouteEvent($this, 'public');
$this->dispatcher->dispatch($event, CoreEvents::BUILD_ROUTE);
$collection = $event->getCollection();
// Force all links to be SSL if the site_url parameter is SSL
$siteUrl = $this->coreParameters->get('site_url');
$forceSSL = false;
if (!empty($siteUrl)) {
$parts = parse_url($siteUrl);
$forceSSL = (!empty($parts['scheme']) && 'https' == $parts['scheme']);
}
if ($forceSSL) {
$collection->setSchemes('https');
}
// Secured area - Default
$event = new RouteEvent($this);
$this->dispatcher->dispatch($event, CoreEvents::BUILD_ROUTE);
$secureCollection = $event->getCollection();
// OneupUploader (added behind our secure /s)
$secureCollection->addCollection($this->import('.', 'uploader'));
// Elfinder file manager
$collection->addCollection($this->import('@FMElfinderBundle/Resources/config/routing.yaml'));
// API
$event = new RouteEvent($this, 'api');
$this->dispatcher->dispatch($event, CoreEvents::BUILD_ROUTE);
$apiCollection = $event->getCollection();
$apiCollection->addPrefix('/api');
if ($forceSSL) {
$apiCollection->setSchemes('https');
}
$collection->addCollection($apiCollection);
$secureCollection->addPrefix('/s');
if ($forceSSL) {
$secureCollection->setSchemes('https');
}
$collection->addCollection($secureCollection);
// Catch all
$event = new RouteEvent($this, 'catchall');
$this->dispatcher->dispatch($event, CoreEvents::BUILD_ROUTE);
$lastCollection = $event->getCollection();
if ($forceSSL) {
$lastCollection->setSchemes('https');
}
$collection->addCollection($lastCollection);
return $collection;
}
/**
* @param mixed $resource
*/
public function supports($resource, $type = null): bool
{
return 'mautic' === $type;
}
}
|