diff --git a/src/Middleware/UnauthorizedHandler/CakeRedirectHandler.php b/src/Middleware/UnauthorizedHandler/CakeRedirectHandler.php index 0643f43e..ce3de97e 100644 --- a/src/Middleware/UnauthorizedHandler/CakeRedirectHandler.php +++ b/src/Middleware/UnauthorizedHandler/CakeRedirectHandler.php @@ -77,6 +77,11 @@ protected function getUrl(ServerRequestInterface $request, array $options): stri $url['?'][$options['queryParam']] = $redirect; } + $requestBase = $request->getAttribute('base'); + if ($requestBase) { + $url['_base'] = $requestBase; + } + return Router::url($url); } } diff --git a/tests/TestCase/Middleware/UnauthorizedHandler/CakeRedirectHandlerTest.php b/tests/TestCase/Middleware/UnauthorizedHandler/CakeRedirectHandlerTest.php index fe8fafdc..7a916ecf 100644 --- a/tests/TestCase/Middleware/UnauthorizedHandler/CakeRedirectHandlerTest.php +++ b/tests/TestCase/Middleware/UnauthorizedHandler/CakeRedirectHandlerTest.php @@ -18,7 +18,6 @@ use Authorization\Exception\Exception; use Authorization\Middleware\UnauthorizedHandler\CakeRedirectHandler; -use Cake\Core\Configure; use Cake\Http\ServerRequestFactory; use Cake\Routing\Router; use Cake\TestSuite\TestCase; @@ -129,10 +128,10 @@ public function testHandleRedirectWithBasePath() $handler = new CakeRedirectHandler(); $exception = new Exception(); - Configure::write('App.base', '/basedir'); $request = ServerRequestFactory::fromGlobals( ['REQUEST_URI' => '/admin/dashboard'] ); + $request = $request->withAttribute('base', '/basedir'); $response = $handler->handle($exception, $request, [ 'exceptions' => [