/** * Deployment form submission handler. * * Initiate a DNDeployment record and redirect to it for status polling * * @param SS_HTTPRequest $request * * @return SS_HTTPResponse * @throws ValidationException * @throws null */ public function startDeploy(SS_HTTPRequest $request) { // Ensure the CSRF Token is correct if (!$this->checkCsrfToken($request)) { // CSRF token didn't match return $this->httpError(400, 'Bad Request'); } // Performs canView permission check by limiting visible projects $project = $this->getCurrentProject(); if (!$project) { return $this->project404Response(); } // Performs canView permission check by limiting visible projects $environment = $this->getCurrentEnvironment($project); if (!$environment) { return $this->environment404Response(); } // Initiate the deployment // The extension point should pass in: Project, Environment, SelectRelease, buildName $this->extend('doDeploy', $project, $environment, $buildName, $data); // Start the deployment based on the approved strategy. $strategy = new DeploymentStrategy($environment); $strategy->fromArray($request->requestVar('strategy')); $deployment = $strategy->createDeployment(); $deployment->start(); return json_encode(array('url' => Director::absoluteBaseURL() . $deployment->Link()), JSON_PRETTY_PRINT); }
/** * Deployment form submission handler. * * @deprecated 2.0.0 - moved to DeployDispatcher * * Initiate a DNDeployment record and redirect to it for status polling * * @param \SS_HTTPRequest $request * * @return SS_HTTPResponse * @throws ValidationException * @throws null */ public function startDeploy(\SS_HTTPRequest $request) { $token = SecurityToken::inst(); // Ensure the submitted token has a value $submittedToken = $request->postVar(\Dispatcher::SECURITY_TOKEN_NAME); if (!$submittedToken) { return false; } // Do the actual check. $check = $token->check($submittedToken); // Ensure the CSRF Token is correct if (!$check) { // CSRF token didn't match return $this->httpError(400, 'Bad Request'); } // Performs canView permission check by limiting visible projects $project = $this->getCurrentProject(); if (!$project) { return $this->project404Response(); } // Performs canView permission check by limiting visible projects $environment = $this->getCurrentEnvironment($project); if (!$environment) { return $this->environment404Response(); } // Initiate the deployment // The extension point should pass in: Project, Environment, SelectRelease, buildName $this->extend('doDeploy', $project, $environment, $buildName, $data); // Start the deployment based on the approved strategy. $strategy = new DeploymentStrategy($environment); $strategy->fromArray($request->requestVar('strategy')); $deployment = $strategy->createDeployment(); // Bypass approval by going straight to Queued. $deployment->getMachine()->apply(DNDeployment::TR_QUEUE); return json_encode(['url' => Director::absoluteBaseURL() . $deployment->Link()], JSON_PRETTY_PRINT); }