setSession($session); $dummyController->setRequest($request); $dummyController->pushCurrent(); // Block non-authenticated users from setting the stage mode if(!Versioned::can_choose_site_stage($request)) { $permissionMessage = sprintf( _t( "ContentController.DRAFT_SITE_ACCESS_RESTRICTION", 'You must log in with your CMS password in order to view the draft or archived content. '. 'Click here to go back to the published site.' ), Controller::join_links(Director::baseURL(), $request->getURL(), "?stage=Live") ); // Force output since RequestFilter::preRequest doesn't support response overriding $response = Security::permissionFailure($dummyController, $permissionMessage); $session->inst_save(); $dummyController->popCurrent(); // Prevent output in testing if(class_exists('SapphireTest', false) && SapphireTest::is_running_test()) { throw new SS_HTTPResponse_Exception($response); } $response->output(); die; } Versioned::choose_site_stage(); $dummyController->popCurrent(); return true; } public function postRequest(SS_HTTPRequest $request, SS_HTTPResponse $response, DataModel $model) { return true; } }