diff --git a/src/aphront/console/DarkConsoleController.php b/src/aphront/console/DarkConsoleController.php index 6f4671631..cb11db7b5 100644 --- a/src/aphront/console/DarkConsoleController.php +++ b/src/aphront/console/DarkConsoleController.php @@ -1,32 +1,41 @@ <?php /** * @group console */ final class DarkConsoleController extends PhabricatorController { protected $op; protected $data; + public function shouldRequireLogin() { + return !PhabricatorEnv::getEnvConfig('darkconsole.always-on'); + } + public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); + $response = id(new AphrontAjaxResponse())->setDisableConsole(true); + + if (!$user->isLoggedIn()) { + return $response; + } $visible = $request->getStr('visible'); if (strlen($visible)) { $user->setConsoleVisible((int)$visible); $user->save(); - return id(new AphrontAjaxResponse())->setDisableConsole(true); + return $response; } $tab = $request->getStr('tab'); if (strlen($tab)) { $user->setConsoleTab($tab); $user->save(); - return id(new AphrontAjaxResponse())->setDisableConsole(true); + return $response; } return new Aphront404Response(); } } diff --git a/src/aphront/console/DarkConsoleDataController.php b/src/aphront/console/DarkConsoleDataController.php index af5364fea..f761308ad 100644 --- a/src/aphront/console/DarkConsoleDataController.php +++ b/src/aphront/console/DarkConsoleDataController.php @@ -1,70 +1,74 @@ <?php /** * @group console */ final class DarkConsoleDataController extends PhabricatorController { private $key; + public function shouldRequireLogin() { + return !PhabricatorEnv::getEnvConfig('darkconsole.always-on'); + } + public function willProcessRequest(array $data) { $this->key = $data['key']; } public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $cache = new PhabricatorKeyValueDatabaseCache(); $cache = new PhutilKeyValueCacheProfiler($cache); $cache->setProfiler(PhutilServiceProfiler::getInstance()); $result = $cache->getKey('darkconsole:'.$this->key); if (!$result) { return new Aphront400Response(); } $result = json_decode($result, true); if (!is_array($result)) { return new Aphront400Response(); } if ($result['vers'] != DarkConsoleCore::STORAGE_VERSION) { return new Aphront400Response(); } if ($result['user'] != $user->getPHID()) { return new Aphront400Response(); } $output = array(); $output['tabs'] = $result['tabs']; $output['panel'] = array(); foreach ($result['data'] as $class => $data) { try { $obj = newv($class, array()); $obj->setData($data); $obj->setRequest($request); $panel = $obj->renderPanel(); if (!empty($_COOKIE['phsid'])) { $panel = PhutilSafeHTML::applyFunction( 'str_replace', $_COOKIE['phsid'], '(session-key)', $panel); } $output['panel'][$class] = $panel; } catch (Exception $ex) { $output['panel'][$class] = 'error'; } } return id(new AphrontAjaxResponse())->setContent($output); } }