Page MenuHomePhabricator

D7979.id18058.diff
No OneTemporary

D7979.id18058.diff

Index: src/aphront/AphrontRequest.php
===================================================================
--- src/aphront/AphrontRequest.php
+++ src/aphront/AphrontRequest.php
@@ -273,11 +273,27 @@
return $this->validateCSRF();
}
+ final public function getCookiePrefix() {
+ return PhabricatorEnv::getEnvConfig('phabricator.cookie-prefix');
+ }
+
+ final public function setCookiePrefix($prefix, $name) {
+ return $prefix.'_'.$name;
+ }
+
final public function getCookie($name, $default = null) {
+ $cookie_prefix = $this->getCookiePrefix();
+ if (strlen($cookie_prefix)) {
+ $name = $this->setCookiePrefix($cookie_prefix, $name);
+ }
return idx($_COOKIE, $name, $default);
}
final public function clearCookie($name) {
+ $cookie_prefix = $this->getCookiePrefix();
+ if (strlen($cookie_prefix)) {
+ $name = $this->setCookiePrefix($cookie_prefix, $name);
+ }
$this->setCookie($name, '', time() - (60 * 60 * 24 * 30));
unset($_COOKIE[$name]);
}
@@ -342,6 +358,10 @@
$expire = time() + (60 * 60 * 24 * 365 * 5);
}
+ $cookie_prefix = $this->getCookiePrefix();
+ if (strlen($cookie_prefix)) {
+ $name = $this->setCookiePrefix($cookie_prefix, $name);
+ }
if (php_sapi_name() == 'cli') {
// Do nothing, to avoid triggering "Cannot modify header information"
Index: src/applications/config/option/PhabricatorCoreConfigOptions.php
===================================================================
--- src/applications/config/option/PhabricatorCoreConfigOptions.php
+++ src/applications/config/option/PhabricatorCoreConfigOptions.php
@@ -76,6 +76,16 @@
->addExample('America/Chicago', pht('US Central (CDT)'))
->addExample('America/Boise', pht('US Mountain (MDT)'))
->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)
->setBoolOptions(
array(

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 2, 7:38 AM (1 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6756263
Default Alt Text
D7979.id18058.diff (2 KB)

Event Timeline