CORE/src/Controller/ControllerFactory.php at line 338
(edit)
|
* @return \Cake\Http\Exception\MissingControllerException
|
|
*/
|
|
protected function missingController(ServerRequest $request)
|
|
{
|
|
return new MissingControllerException([
|
|
'controller' => $request->getParam('controller'),
|
|
'plugin' => $request->getParam('plugin'),
|
|
'prefix' => $request->getParam('prefix'),
|
|
'_ext' => $request->getParam('_ext'),
|
-
|
public function create(ServerRequestInterface $request): Controller
|
|
{
|
|
$className = $this->getControllerClass($request);
|
|
if ($className === null) {
|
|
throw $this->missingController($request);
|
|
}
|
|
|
|
$reflection = new ReflectionClass($className);
|
|
if ($reflection->isAbstract()) {
|
Toggle Arguments
-
|
if (Router::getRequest() !== $request) {
|
|
Router::setRequest($request);
|
|
}
|
|
|
|
$controller = $this->controllerFactory->create($request);
|
|
|
|
// This is needed for auto-wiring. Should be removed in 5.x
|
|
$container->add(ComponentRegistry::class, $controller->components());
|
|
|
Toggle Arguments
-
|
return $middleware->process($request, $this);
|
|
}
|
|
|
|
if ($this->fallbackHandler) {
|
|
return $this->fallbackHandler->handle($request);
|
|
}
|
|
|
|
return new Response([
|
|
'body' => 'Middleware queue was exhausted without returning a response '
|
Toggle Arguments
-
|
if ($request->getCookieParams()) {
|
|
$request = $this->decodeCookies($request);
|
|
}
|
|
|
|
$response = $handler->handle($request);
|
|
if ($response->hasHeader('Set-Cookie')) {
|
|
$response = $this->encodeSetCookieHeader($response);
|
|
}
|
|
if ($response instanceof Response) {
|
Toggle Arguments
-
|
if ($this->queue->valid()) {
|
|
$middleware = $this->queue->current();
|
|
$this->queue->next();
|
|
|
|
return $middleware->process($request, $this);
|
|
}
|
|
|
|
if ($this->fallbackHandler) {
|
|
return $this->fallbackHandler->handle($request);
|
Toggle Arguments
-
|
$request = $request->withAttribute($attribute, $identity);
|
|
}
|
|
|
|
try {
|
|
$response = $handler->handle($request);
|
|
|
|
if ($this->getConfig('requireAuthorizationCheck') && !$service->authorizationChecked()) {
|
|
throw new AuthorizationRequiredException(['url' => $request->getRequestTarget()]);
|
|
}
|
Toggle Arguments
-
|
if ($this->queue->valid()) {
|
|
$middleware = $this->queue->current();
|
|
$this->queue->next();
|
|
|
|
return $middleware->process($request, $this);
|
|
}
|
|
|
|
if ($this->fallbackHandler) {
|
|
return $this->fallbackHandler->handle($request);
|
Toggle Arguments
-
|
$request = $request->withAttribute('authentication', $service);
|
|
$request = $request->withAttribute('authenticationResult', $result);
|
|
|
|
try {
|
|
$response = $handler->handle($request);
|
|
$authenticator = $service->getAuthenticationProvider();
|
|
|
|
if ($authenticator !== null && !$authenticator instanceof StatelessInterface) {
|
|
$return = $service->persistIdentity($request, $response, $result->getData());
|
Toggle Arguments
-
|
if ($this->queue->valid()) {
|
|
$middleware = $this->queue->current();
|
|
$this->queue->next();
|
|
|
|
return $middleware->process($request, $this);
|
|
}
|
|
|
|
if ($this->fallbackHandler) {
|
|
return $this->fallbackHandler->handle($request);
|
Toggle Arguments
-
|
Hash::get($params, 'plugin') !== 'ADmad/SocialAuth'
|
|
|| Hash::get($params, 'controller') !== 'Auth'
|
|
|| !in_array($action, ['login', 'callback'], true)
|
|
) {
|
|
return $handler->handle($request);
|
|
}
|
|
|
|
$method = '_handle' . ucfirst($action) . 'Action';
|
|
|
Toggle Arguments
-
|
if ($this->queue->valid()) {
|
|
$middleware = $this->queue->current();
|
|
$this->queue->next();
|
|
|
|
return $middleware->process($request, $this);
|
|
}
|
|
|
|
if ($this->fallbackHandler) {
|
|
return $this->fallbackHandler->handle($request);
|
Toggle Arguments
-
|
}
|
|
|
|
Configure::write('App.language', $lang);
|
|
|
|
return $handler->handle($request);
|
|
}
|
|
|
|
/**
|
|
* Set closure for deciding whether or not to ignore particular request.
|
Toggle Arguments
-
|
if ($this->queue->valid()) {
|
|
$middleware = $this->queue->current();
|
|
$this->queue->next();
|
|
|
|
return $middleware->process($request, $this);
|
|
}
|
|
|
|
if ($this->fallbackHandler) {
|
|
return $this->fallbackHandler->handle($request);
|
Toggle Arguments
-
|
);
|
|
}
|
|
$matching = Router::getRouteCollection()->getMiddleware($middleware);
|
|
if (!$matching) {
|
|
return $handler->handle($request);
|
|
}
|
|
|
|
$container = $this->app instanceof ContainerApplicationInterface
|
|
? $this->app->getContainer()
|
Toggle Arguments
-
|
if ($this->queue->valid()) {
|
|
$middleware = $this->queue->current();
|
|
$this->queue->next();
|
|
|
|
return $middleware->process($request, $this);
|
|
}
|
|
|
|
if ($this->fallbackHandler) {
|
|
return $this->fallbackHandler->handle($request);
|
Toggle Arguments
-
|
}
|
|
|
|
$assetFile = $this->_getAssetFile($url);
|
|
if ($assetFile === null || !is_file($assetFile)) {
|
|
return $handler->handle($request);
|
|
}
|
|
|
|
$file = new SplFileInfo($assetFile);
|
|
$modifiedTime = $file->getMTime();
|
Toggle Arguments
-
|
if ($this->queue->valid()) {
|
|
$middleware = $this->queue->current();
|
|
$this->queue->next();
|
|
|
|
return $middleware->process($request, $this);
|
|
}
|
|
|
|
if ($this->fallbackHandler) {
|
|
return $this->fallbackHandler->handle($request);
|
Toggle Arguments
-
|
*/
|
|
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
|
{
|
|
try {
|
|
return $handler->handle($request);
|
|
} catch (RedirectException $exception) {
|
|
return $this->handleRedirect($exception);
|
|
} catch (Throwable $exception) {
|
|
return $this->handleException($exception, $request);
|
Toggle Arguments
-
|
if ($this->queue->valid()) {
|
|
$middleware = $this->queue->current();
|
|
$this->queue->next();
|
|
|
|
return $middleware->process($request, $this);
|
|
}
|
|
|
|
if ($this->fallbackHandler) {
|
|
return $this->fallbackHandler->handle($request);
|
Toggle Arguments
-
|
) {
|
|
Router::setRequest($request);
|
|
}
|
|
|
|
return $this->handle($request);
|
|
}
|
|
|
|
/**
|
|
* Handle incoming server request and return a response.
|
Toggle Arguments
-
|
}
|
|
|
|
$this->dispatchEvent('Server.buildMiddleware', ['middleware' => $middleware]);
|
|
|
|
$response = $this->runner->run($middleware, $request, $this->app);
|
|
|
|
if ($request instanceof ServerRequest) {
|
|
$request->getSession()->close();
|
|
}
|
Toggle Arguments
-
|
// Bind your application to the server.
|
|
$server = new Server(new Application(dirname(__DIR__) . '/config'));
|
|
|
|
// Run the request/response through the application and emit the response.
|
|
$server->emit($server->run());
|
|
|
Toggle Arguments
-
If you want to customize this error message, create
templates/Error/error400.ctp