diff options
author | Lukas Reschke <lukas@owncloud.com> | 2015-10-06 15:24:19 +0200 |
---|---|---|
committer | Lukas Reschke <lukas@owncloud.com> | 2015-10-06 15:24:19 +0200 |
commit | 6a4f22c61f58b80f826408780d6882f0d1041e70 (patch) | |
tree | 141104ccb4b0deae788124daf43d69202b3f4fb4 /lib | |
parent | 191f1b2d49afe980f43bdf6c0cc2c8cbb7f88c91 (diff) | |
download | nextcloud-server-6a4f22c61f58b80f826408780d6882f0d1041e70.tar.gz nextcloud-server-6a4f22c61f58b80f826408780d6882f0d1041e70.zip |
Use `/` if installed in main folder
Otherwise an empty string is used indicating the cookie is only valid for those resources. This can lead to eunexpected behaviour.
Fixes https://github.com/owncloud/core/issues/19196
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/appframework/dependencyinjection/dicontainer.php | 2 | ||||
-rw-r--r-- | lib/private/appframework/http/output.php | 16 | ||||
-rw-r--r-- | lib/public/appframework/http/ioutput.php | 4 |
3 files changed, 16 insertions, 6 deletions
diff --git a/lib/private/appframework/dependencyinjection/dicontainer.php b/lib/private/appframework/dependencyinjection/dicontainer.php index 4779d6bf0ad..651b268a35e 100644 --- a/lib/private/appframework/dependencyinjection/dicontainer.php +++ b/lib/private/appframework/dependencyinjection/dicontainer.php @@ -79,7 +79,7 @@ class DIContainer extends SimpleContainer implements IAppContainer { }); $this->registerService('OCP\\AppFramework\\Http\\IOutput', function($c){ - return new Output(); + return new Output($this->getServer()->getWebRoot()); }); $this->registerService('OCP\\IAvatarManager', function($c) { diff --git a/lib/private/appframework/http/output.php b/lib/private/appframework/http/output.php index f04157665f8..01636d397b2 100644 --- a/lib/private/appframework/http/output.php +++ b/lib/private/appframework/http/output.php @@ -27,6 +27,15 @@ use OCP\AppFramework\Http\IOutput; * Very thin wrapper class to make output testable */ class Output implements IOutput { + /** @var string */ + private $webRoot; + + /** + * @param $webRoot + */ + public function __construct($webRoot) { + $this->webRoot = $webRoot; + } /** * @param string $out @@ -72,10 +81,11 @@ class Output implements IOutput { * @param string $path * @param string $domain * @param bool $secure - * @param bool $httponly + * @param bool $httpOnly */ - public function setCookie($name, $value, $expire, $path, $domain, $secure, $httponly) { - setcookie($name, $value, $expire, $path, $domain, $secure, $httponly); + public function setCookie($name, $value, $expire, $path, $domain, $secure, $httpOnly) { + $path = $this->webRoot ? : '/'; + setcookie($name, $value, $expire, $path, $domain, $secure, $httpOnly); } } diff --git a/lib/public/appframework/http/ioutput.php b/lib/public/appframework/http/ioutput.php index ba4c031001b..185bc589f22 100644 --- a/lib/public/appframework/http/ioutput.php +++ b/lib/public/appframework/http/ioutput.php @@ -68,9 +68,9 @@ interface IOutput { * @param string $path * @param string $domain * @param bool $secure - * @param bool $httponly + * @param bool $httpOnly * @since 8.1.0 */ - public function setCookie($name, $value, $expire, $path, $domain, $secure, $httponly); + public function setCookie($name, $value, $expire, $path, $domain, $secure, $httpOnly); } |