/**
  * 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();
 }
예제 #2
0
 /**
  * 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');
     }
 }
예제 #3
0
 /**
  * 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());
 }
예제 #6
0
 /**
  * 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');
     }
 }