mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-10 08:52:39 +01:00
Aprhont - Adding cookie-prefix, as config option, and into cookie methods
Summary: Cookie-prefix should fix phabricator instances where x.com and x.y.com have conflicting cookie names Test Plan: Pushed branch to dev.phab.example.com, logged into phab.example.com and into dev.phab.example.com. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley CC: Korvin, epriestley, aran Differential Revision: https://secure.phabricator.com/D7979
This commit is contained in:
parent
c40420eb74
commit
e6a6c265b0
3 changed files with 29 additions and 0 deletions
|
@ -273,11 +273,26 @@ final class AphrontRequest {
|
||||||
return $this->validateCSRF();
|
return $this->validateCSRF();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final public function setCookiePrefix($prefix) {
|
||||||
|
$this->cookiePrefix = $prefix;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
final private function getPrefixedCookieName($name) {
|
||||||
|
if (strlen($this->cookiePrefix)) {
|
||||||
|
return $this->cookiePrefix.'_'.$name;
|
||||||
|
} else {
|
||||||
|
return $name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
final public function getCookie($name, $default = null) {
|
final public function getCookie($name, $default = null) {
|
||||||
|
$name = $this->getPrefixedCookieName($name);
|
||||||
return idx($_COOKIE, $name, $default);
|
return idx($_COOKIE, $name, $default);
|
||||||
}
|
}
|
||||||
|
|
||||||
final public function clearCookie($name) {
|
final public function clearCookie($name) {
|
||||||
|
$name = $this->getPrefixedCookieName($name);
|
||||||
$this->setCookie($name, '', time() - (60 * 60 * 24 * 30));
|
$this->setCookie($name, '', time() - (60 * 60 * 24 * 30));
|
||||||
unset($_COOKIE[$name]);
|
unset($_COOKIE[$name]);
|
||||||
}
|
}
|
||||||
|
@ -342,6 +357,7 @@ final class AphrontRequest {
|
||||||
$expire = time() + (60 * 60 * 24 * 365 * 5);
|
$expire = time() + (60 * 60 * 24 * 365 * 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$name = $this->getPrefixedCookieName($name);
|
||||||
|
|
||||||
if (php_sapi_name() == 'cli') {
|
if (php_sapi_name() == 'cli') {
|
||||||
// Do nothing, to avoid triggering "Cannot modify header information"
|
// Do nothing, to avoid triggering "Cannot modify header information"
|
||||||
|
|
|
@ -107,9 +107,12 @@ class AphrontDefaultApplicationConfiguration
|
||||||
|
|
||||||
$data += $parser->parseQueryString(idx($_SERVER, 'QUERY_STRING', ''));
|
$data += $parser->parseQueryString(idx($_SERVER, 'QUERY_STRING', ''));
|
||||||
|
|
||||||
|
$cookie_prefix = PhabricatorEnv::getEnvConfig('phabricator.cookie-prefix');
|
||||||
|
|
||||||
$request = new AphrontRequest($this->getHost(), $this->getPath());
|
$request = new AphrontRequest($this->getHost(), $this->getPath());
|
||||||
$request->setRequestData($data);
|
$request->setRequestData($data);
|
||||||
$request->setApplicationConfiguration($this);
|
$request->setApplicationConfiguration($this);
|
||||||
|
$request->setCookiePrefix($cookie_prefix);
|
||||||
|
|
||||||
return $request;
|
return $request;
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,6 +76,16 @@ final class PhabricatorCoreConfigOptions
|
||||||
->addExample('America/Chicago', pht('US Central (CDT)'))
|
->addExample('America/Chicago', pht('US Central (CDT)'))
|
||||||
->addExample('America/Boise', pht('US Mountain (MDT)'))
|
->addExample('America/Boise', pht('US Mountain (MDT)'))
|
||||||
->addExample('America/Los_Angeles', pht('US West (PDT)')),
|
->addExample('America/Los_Angeles', pht('US West (PDT)')),
|
||||||
|
$this->newOption('phabricator.cookie-prefix', 'string', null)
|
||||||
|
->setSummary(
|
||||||
|
pht("Set a string Phabricator should use to prefix ".
|
||||||
|
"cookie names"))
|
||||||
|
->setDescription(
|
||||||
|
pht(
|
||||||
|
"Cookies set for x.com are also sent for y.x.com. Assuming ".
|
||||||
|
"Phabricator instances are running on both domains, this will ".
|
||||||
|
"create a collision preventing you from logging in."))
|
||||||
|
->addExample('dev', pht('Prefix cookie with "dev"')),
|
||||||
$this->newOption('phabricator.show-beta-applications', 'bool', false)
|
$this->newOption('phabricator.show-beta-applications', 'bool', false)
|
||||||
->setBoolOptions(
|
->setBoolOptions(
|
||||||
array(
|
array(
|
||||||
|
|
Loading…
Reference in a new issue