From 70b869c43fcbac3e6a477b28f030ac2935c95c29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Tue, 29 Oct 2019 16:13:51 +0100 Subject: [PATCH] Universal routes --- src/Middleware/PreventAccessFromTenantDomains.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Middleware/PreventAccessFromTenantDomains.php b/src/Middleware/PreventAccessFromTenantDomains.php index fb797d4c..4216ff44 100644 --- a/src/Middleware/PreventAccessFromTenantDomains.php +++ b/src/Middleware/PreventAccessFromTenantDomains.php @@ -22,12 +22,17 @@ class PreventAccessFromTenantDomains */ public function handle($request, Closure $next) { + // If the route is universal, always let the request pass. + if ($this->routeHasMiddleware($request()->route(), 'universal')) { + return $next($request); + } + // If the domain is not in exempt domains, it's a tenant domain. // Tenant domains can't have routes without tenancy middleware. $isExemptDomain = in_array($request->getHost(), config('tenancy.exempt_domains')); $isTenantDomain = ! $isExemptDomain; - $isTenantRoute = $this->isTenantRoute($request->route()); + $isTenantRoute = $this->routeHasMiddleware($request->route(), 'tenancy'); if ($isTenantDomain && ! $isTenantRoute) { // accessing web routes from tenant domains return redirect(config('tenancy.home_url')); @@ -40,9 +45,9 @@ class PreventAccessFromTenantDomains return $next($request); } - public function isTenantRoute(Route $route): bool + public function routeHasMiddleware(Route $route, $middleware): bool { - if (in_array('tenancy', $route->middleware(), true)) { + if (in_array($middleware, $route->middleware(), true)) { return true; } @@ -50,7 +55,7 @@ class PreventAccessFromTenantDomains // groups have a `tenancy` middleware group inside them $middlewareGroups = Router::getMiddlewareGroups(); foreach ($route->gatherMiddleware() as $middleware) { - if (isset($middlewareGroups[$middleware]) && in_array('tenancy', $middlewareGroups[$middleware], true)) { + if (isset($middlewareGroups[$middleware]) && in_array($middleware, $middlewareGroups[$middleware], true)) { return true; } }