diff --git a/src/MultilingualRegistrar.php b/src/MultilingualRegistrar.php index ba30956..37448d7 100644 --- a/src/MultilingualRegistrar.php +++ b/src/MultilingualRegistrar.php @@ -72,6 +72,10 @@ protected function registerRoute(string $key, $handle, string $locale, array $op $route->setUri("{$prefix}/{$route->uri}"); } + if ($middleware = Arr::get($options, 'middleware')) { + $route->middleware($middleware); + } + data_set($route, 'action.as', ( $this->generateNameForLocaleFromOptions( $locale, diff --git a/src/MultilingualRoutePendingRegistration.php b/src/MultilingualRoutePendingRegistration.php index 27e8299..ccfbdb4 100644 --- a/src/MultilingualRoutePendingRegistration.php +++ b/src/MultilingualRoutePendingRegistration.php @@ -137,6 +137,19 @@ public function method(string $method): self return $this; } + /** + * Set the middleware of the route. + * + * @param string|array $middleware + * @return self + */ + public function middleware($middleware): self + { + $this->options['middleware'] = $middleware; + + return $this; + } + /** * Set the name of each locale for the routes. * diff --git a/tests/RouteTest.php b/tests/RouteTest.php index 0e29bff..3246123 100644 --- a/tests/RouteTest.php +++ b/tests/RouteTest.php @@ -446,6 +446,16 @@ public function the_default_home_page_can_be_registered_without_prefix(): void $this->assertEquals(url('fr'), localized_route('home', [], 'fr')); } + /** @test **/ + public function a_route_can_be_registered_with_a_middleware(): void + { + Route::multilingual('/')->middleware('web'); + + foreach (Route::getRoutes() as $route) { + $this->assertContains('web', data_get($route, 'action.middleware')); + } + } + protected function registerTestRoute(): MultilingualRoutePendingRegistration { $this->registerTestTranslations();