瀏覽代碼

routing - add domain and path normalization

Olivier Massot 4 年之前
父節點
當前提交
d41c172c10
共有 2 個文件被更改,包括 9 次插入5 次删除
  1. 2 2
      ot_core/Classes/Utility/RouteNormalizer.php
  2. 7 3
      ot_core/Classes/Website/OtWebsiteRepository.php

+ 2 - 2
ot_core/Classes/Utility/RouteNormalizer.php

@@ -4,8 +4,8 @@ namespace Opentalent\OtCore\Utility;
 
 class RouteNormalizer
 {
-    public static function normalizeSlug(string $slug) {
-        return '/' . trim($slug, '/');
+    public static function normalizePath(string $path) {
+        return '/' . trim($path, '/');
     }
 
     public static function normalizeDomain(string $domain) {

+ 7 - 3
ot_core/Classes/Website/OtWebsiteRepository.php

@@ -4,6 +4,7 @@ namespace Opentalent\OtCore\Website;
 
 use Opentalent\OtCore\Exception\InvalidWebsiteConfigurationException;
 use Opentalent\OtCore\Exception\NoSuchWebsiteException;
+use Opentalent\OtCore\Utility\RouteNormalizer;
 use Symfony\Component\Yaml\Yaml;
 use TYPO3\CMS\Core\Http\Uri;
 use TYPO3\CMS\Core\Site\Entity\Site;
@@ -301,15 +302,18 @@ class OtWebsiteRepository
             ->select('*')
             ->from('ot_websites');
 
+        $domain = RouteNormalizer::normalizeDomain($uri->getHost());
+        $path = RouteNormalizer::normalizePath($uri->getPath());
+
         if ($devMode) {
-            preg_match("/(\w+)(?:\/.*)?/", $uri->getPath(), $m);
+            preg_match("/([\w\-]+)(?:\/.*)?/", $path, $m);
             $q = $q->where($queryBuilder->expr()->eq('subdomain', $queryBuilder->expr()->literal($m[1])));
         } else {
-            preg_match("/([\w\-]+)\.opentalent\.fr/", $uri->getHost(), $m);
+            preg_match("/([\w\-]+)\.opentalent\.fr/", $domain, $m);
             if (count($m) > 0) {
                 $q = $q->where($queryBuilder->expr()->eq('subdomain', $queryBuilder->expr()->literal($m[1])));
             } else {
-                $q = $q->where($queryBuilder->expr()->eq('custom_domain', $queryBuilder->expr()->literal($uri->getHost())));
+                $q = $q->where($queryBuilder->expr()->eq('custom_domain', $queryBuilder->expr()->literal($domain)));
             }
         }