/** * Determines the action method and assures that the method exists. * * @return string The action method name * @throws \TYPO3\Flow\Mvc\Exception\NoSuchActionException if the action specified in the request object does not exist (and if there's no default action either). */ protected function resolveActionMethodName() { if ($this->request->getControllerActionName() === 'index') { $actionName = 'index'; switch ($this->request->getHttpRequest()->getMethod()) { case 'HEAD': case 'GET': $actionName = $this->request->hasArgument($this->resourceArgumentName) ? 'show' : 'list'; break; case 'POST': $actionName = 'create'; break; case 'PUT': if (!$this->request->hasArgument($this->resourceArgumentName)) { $this->throwStatus(400, NULL, 'No resource specified'); } $actionName = 'update'; break; case 'DELETE': if (!$this->request->hasArgument($this->resourceArgumentName)) { $this->throwStatus(400, NULL, 'No resource specified'); } $actionName = 'delete'; break; } $this->request->setControllerActionName($actionName); } return parent::resolveActionMethodName(); }
/** * Set the default controller and action names if none has been specified. * * @return void */ protected function setDefaultControllerAndActionNameIfNoneSpecified() { if ($this->actionRequest->getControllerName() === NULL) { $this->actionRequest->setControllerName('Standard'); } if ($this->actionRequest->getControllerActionName() === NULL) { $this->actionRequest->setControllerActionName('index'); } }
/** * Is called if authentication was successful. * * See the implementation in the AbstractAuthenticationController for details! * * @param \TYPO3\Flow\Mvc\ActionRequest $originalRequest The request that was intercepted by the security framework, NULL if there was none * @return string */ protected function onAuthenticationSuccess(\TYPO3\Flow\Mvc\ActionRequest $originalRequest = NULL) { // if the login attempt is authenticated, add a success flash message $this->addFlashMessage($this->translate('status_login_success', 'Login')); // basically redirect to the intercepted requiest if there's one - but never redirect // to the login form after successful login as this seems to make no sense. if ($originalRequest !== NULL && $originalRequest->getControllerActionName() != 'login') { $this->redirectToRequest($originalRequest); } else { $this->redirect('dashboard', 'Standard'); } }
/** * Pass the arguments of the widget to the sub request. * * @param ActionRequest $subRequest * @return void */ private function passArgumentsToSubRequest(ActionRequest $subRequest) { $arguments = $this->controllerContext->getRequest()->getPluginArguments(); $widgetIdentifier = $this->widgetContext->getWidgetIdentifier(); $controllerActionName = 'index'; if (isset($arguments[$widgetIdentifier])) { if (isset($arguments[$widgetIdentifier]['@action'])) { $controllerActionName = $arguments[$widgetIdentifier]['@action']; unset($arguments[$widgetIdentifier]['@action']); } $subRequest->setArguments($arguments[$widgetIdentifier]); } if ($subRequest->getControllerActionName() === null) { $subRequest->setControllerActionName($controllerActionName); } }
/** * Redirects the request to another action and / or controller. * * Redirect will be sent to the client which then performs another request to the new URI. * * NOTE: This method only supports web requests and will throw an exception * if used with other request types. * * @param ActionRequest $request The request to redirect to * @param integer $delay (optional) The delay in seconds. Default is no delay. * @param integer $statusCode (optional) The HTTP status code for the redirect. Default is "303 See Other" * @return void * @throws \TYPO3\Flow\Mvc\Exception\StopActionException * @see forwardToRequest() * @api */ protected function redirectToRequest(ActionRequest $request, $delay = 0, $statusCode = 303) { $packageKey = $request->getControllerPackageKey(); $subpackageKey = $request->getControllerSubpackageKey(); if ($subpackageKey !== null) { $packageKey .= '\\' . $subpackageKey; } $this->redirect($request->getControllerActionName(), $request->getControllerName(), $packageKey, $request->getArguments(), $delay, $statusCode, $request->getFormat()); }
/** * Is called if authentication was successful. * * @param \TYPO3\Flow\Mvc\ActionRequest $originalRequest The request that was intercepted by the security framework, NULL if there was none * @return string */ public function onAuthenticationSuccess(\TYPO3\Flow\Mvc\ActionRequest $originalRequest = NULL) { $uriBuilder = $this->controllerContext->getUriBuilder(); if ($originalRequest !== NULL) { $uri = $uriBuilder->uriFor($originalRequest->getControllerActionName(), $originalRequest->getArguments(), $originalRequest->getControllerName(), $originalRequest->getControllerPackageKey()); } else { if (isset($this->settings['Redirect']['signedIn'])) { $packageKey = $this->settings['Redirect']['signedIn']['packageKey']; $controllerName = $this->settings['Redirect']['signedIn']['controllerName']; $actionName = $this->settings['Redirect']['signedIn']['actionName']; $uri = $uriBuilder->uriFor($actionName, NULL, $controllerName, $packageKey); } else { $uri = $uriBuilder->uriFor('signIn', NULL, 'Login', 'Flow.Login'); } } $response = array(); $response['status'] = 'OK'; $response['redirect'] = $uri; $this->view->assign('value', $response); }
/** * Set the default controller and action names if none has been specified. * * @param ActionRequest $actionRequest * @return void */ protected function setDefaultControllerAndActionNameIfNoneSpecified(ActionRequest $actionRequest) { if ($actionRequest->getControllerName() === null) { $actionRequest->setControllerName('Standard'); } if ($actionRequest->getControllerActionName() === null) { $actionRequest->setControllerActionName('index'); } }