fix public link share if a user is logged in
This commit is contained in:
parent
cb79169cf5
commit
a9ebf2aabe
3 changed files with 32 additions and 7 deletions
|
@ -237,10 +237,15 @@ class Keymanager
|
|||
}
|
||||
|
||||
$util = new Util($view, \OCP\User::getUser());
|
||||
list($owner, $filename) = $util->getUidAndFilename($filePath);
|
||||
$filePath_f = ltrim($filename, '/');
|
||||
|
||||
$keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key';
|
||||
if ($util->isPublic()) {
|
||||
$keyfilePath = $util->getKeyfilePath() . $filePath . '.key';
|
||||
} else {
|
||||
list($owner, $filename) = $util->getUidAndFilename($filePath);
|
||||
$filePath_f = ltrim($filename, '/');
|
||||
|
||||
$keyfilePath = '/' . $owner . '/files_encryption/keyfiles/' . $filePath_f . '.key';
|
||||
}
|
||||
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
@ -447,9 +452,13 @@ class Keymanager
|
|||
//here we need the currently logged in user, while userId can be a different user
|
||||
$util = new Util($view, \OCP\User::getUser());
|
||||
|
||||
list($owner, $filename) = $util->getUidAndFilename($filePath);
|
||||
if ($util->isPublic()) {
|
||||
$shareKeyPath = $util->getSharekeyPath() . $filePath . '.' . $userId . '.shareKey';
|
||||
} else {
|
||||
list($owner, $filename) = $util->getUidAndFilename($filePath);
|
||||
$shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey');
|
||||
}
|
||||
|
||||
$shareKeyPath = \OC\Files\Filesystem::normalizePath('/' . $owner . '/files_encryption/share-keys/' . $filename . '.' . $userId . '.shareKey');
|
||||
if ($view->file_exists($shareKeyPath)) {
|
||||
|
||||
$result = $view->file_get_contents($shareKeyPath);
|
||||
|
|
|
@ -84,7 +84,9 @@ class Session
|
|||
|
||||
}
|
||||
|
||||
if (\OCP\USER::getUser() === false) {
|
||||
if (\OCP\USER::getUser() === false ||
|
||||
(isset($_GET['service']) && $_GET['service'] == 'files' &&
|
||||
isset($_GET['t']))) {
|
||||
// Disable encryption proxy to prevent recursive calls
|
||||
$proxyStatus = \OC_FileProxy::$enabled;
|
||||
\OC_FileProxy::$enabled = false;
|
||||
|
|
|
@ -129,7 +129,9 @@ class Util
|
|||
$this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId');
|
||||
|
||||
// if we are anonymous/public
|
||||
if ($this->userId === false) {
|
||||
if ($this->userId === false ||
|
||||
(isset($_GET['service']) && $_GET['service'] == 'files' &&
|
||||
isset($_GET['t']))) {
|
||||
$this->userId = $this->publicShareKeyId;
|
||||
|
||||
// only handle for files_sharing app
|
||||
|
@ -1491,4 +1493,16 @@ class Util
|
|||
|
||||
$this->recoverAllFiles('/', $privateKey);
|
||||
}
|
||||
|
||||
public function isPublic() {
|
||||
return $this->isPublic;
|
||||
}
|
||||
|
||||
public function getKeyfilePath() {
|
||||
return $this->keyfilesPath;
|
||||
}
|
||||
|
||||
public function getSharekeyPath() {
|
||||
return $this->shareKeysPath;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue