feat(TutoSubscriber): Gère la redirection vers /tutoriel depuis le sous-domaine.

 feat(caddy): Ajoute le sous-domaine tutoriel.esy-web.dev à la configuration caddy.
 feat(TutoController): Crée la route /tutoriel et affiche les liens des catégories.
This commit is contained in:
Serreau Jovann
2025-10-01 13:44:17 +02:00
parent 188e4d281f
commit 6f77b19554
3 changed files with 97 additions and 1 deletions

View File

@@ -1,4 +1,4 @@
mainframe.esy-web.dev {
tutoriel.esy-web.dev, mainframe.esy-web.dev {
tls {
dns cloudflare bnbe6SmF2kYBnDi4rEeoPI0wNXeFDWn0xZv7Dnfp
}

View File

@@ -18,12 +18,77 @@ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Twig\Environment;
class TutoController extends AbstractController
{
#[Route(path: '/tutoriel',name: 'app_tuto',methods: ['GET', 'POST'])]
public function tuto(): Response
{
$categories =[
'dashboard',
'custom_graphics',
'custom_colors',
'custom_colors_degrade',
'custom_fonts',
'custom_fonts_custom',
'custom_fontSize',
'custom_crops',
'custom_shape',
'custom_files',
'navbar',
'menu',
'content_management',
'footer',
'internal_page',
'modules_txtAdmin',
'modules_slider',
'modules_parallax',
'modules_pushForward',
'modules_bouton',
'modules_title',
'modules_event',
'modules_news',
'modules_partenair',
'modules_faq',
'modules_form',
'modules_socialNetwork',
'modules_maps',
'modules_newsletter',
'modules_counter',
'modules_cover',
'modules_notif',
'modules_photo',
'modules_photoLibrary',
'modules_video',
'modules_videoLibrary',
'modules_cloud',
'modules_pdfViewer',
'modules_sound',
'modules_trustpilot',
'modules_securedHoliday',
'modules_googleAdsense',
'modules_iframe',
'setting',
'setting_link',
'setting_legal',
'setting_ext',
'setting_langue',
'setting_security',
'customer',
'administrator',
'customer_group',
'customer_settings',
];
$links = [];
foreach ($categories as $category) {
$links[] = $this->generateUrl('app_tuto_view',['type' => $category],UrlGeneratorInterface::ABSOLUTE_URL);
}
return $this->json($links);
}
#[Route(path: '/tutoriel/{type}',name: 'app_tuto_view',methods: ['GET', 'POST'])]
public function tutoView(?string $type,EsyWebTutoRepository $esyWebTutoRepository): Response
{

View File

@@ -0,0 +1,31 @@
<?php
namespace App\EventListener;
use Presta\SitemapBundle\Event\SitemapPopulateEvent;
use Presta\SitemapBundle\Sitemap\Url\UrlConcrete;
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
#[AsEventListener(event: KernelEvents::REQUEST,method: 'onKernelRequest')]
class TutoSubscriber
{
public function __construct(private readonly UrlGeneratorInterface $urlGenerator)
{
}
public function onKernelRequest(RequestEvent $event): void
{
$host = $event->getRequest()->getHost();
$path = $event->getRequest()->getPathInfo();
if($host == "tutoriel.esy-web.dev" && !str_contains($path,"/tutoriel")) {
$redirect = new RedirectResponse($this->urlGenerator->generate('app_tuto'));
$event->setResponse($redirect);
}
}
}