aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files_encryption/lib/util.php9
-rw-r--r--lib/public/share.php27
2 files changed, 20 insertions, 16 deletions
diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php
index 732f5fece85..2a64680599f 100644
--- a/apps/files_encryption/lib/util.php
+++ b/apps/files_encryption/lib/util.php
@@ -109,6 +109,7 @@ class Util {
private $publicKeyPath; // Path to user's public key
private $privateKeyPath; // Path to user's private key
private $publicShareKeyId;
+ private $recoveryKeyId;
public function __construct( \OC_FilesystemView $view, $userId, $client = false ) {
@@ -125,6 +126,7 @@ class Util {
$this->publicKeyPath = $this->publicKeyDir . '/' . $this->userId . '.public.key'; // e.g. data/public-keys/admin.public.key
$this->privateKeyPath = $this->encryptionDir . '/' . $this->userId . '.private.key'; // e.g. data/admin/admin.private.key
$this->publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId');
+ $this->recoveryKeyId = \OC_Appconfig::getValue('files_encryption', 'recoveryKeyId');
}
public function ready() {
@@ -798,6 +800,7 @@ class Util {
// public system user 'ownCloud' (for public shares)
if (
$user == $this->publicShareKeyId
+ or $user == $this->recoveryKeyId
or $util->ready()
) {
@@ -949,7 +952,11 @@ class Util {
if ( $sharingEnabled ) {
// Find out who, if anyone, is sharing the file
- $userIds = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true );
+ $result = \OCP\Share::getUsersSharingFile( $ownerPath, $owner,true, true, true );
+ $userIds = $result['users'];
+ if ( $result['public'] ) {
+ $userIds[] = $this->publicShareKeyId;
+ }
}
diff --git a/lib/public/share.php b/lib/public/share.php
index b9cf05bbf7f..10400e34c50 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -138,6 +138,7 @@ class Share {
$path_parts = explode(DIRECTORY_SEPARATOR, trim($path, DIRECTORY_SEPARATOR));
$path = '';
$shares = array();
+ $publicShare = false;
$view = new \OC\Files\View('/' . $user . '/files/');
foreach ($path_parts as $p) {
$path .= '/' . $p;
@@ -184,27 +185,23 @@ class Share {
$shares = array_merge($shares, $usersInGroup);
}
- $publicShareKeyId = \OC_Appconfig::getValue('files_encryption', 'publicShareKeyId');
-
- if ($publicShareKeyId) {
- //check for public link shares
- $query = \OC_DB::prepare(
- 'SELECT share_with
+ //check for public link shares
+ $query = \OC_DB::prepare(
+ 'SELECT share_with
FROM
`*PREFIX*share`
WHERE
item_source = ? AND share_type = ?'
- );
+ );
- $result = $query->execute(array($source, self::SHARE_TYPE_LINK));
+ $result = $query->execute(array($source, self::SHARE_TYPE_LINK));
- if (\OC_DB::isError($result)) {
- \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR);
- }
+ if (\OC_DB::isError($result)) {
+ \OC_Log::write('OCP\Share', \OC_DB::getErrorMessage($result), \OC_Log::ERROR);
+ }
- if ($result->fetchRow()) {
- $shares[] = $publicShareKeyId;
- }
+ if ($result->fetchRow()) {
+ $publicShare = true;
}
}
// Include owner in list of users, if requested
@@ -212,7 +209,7 @@ class Share {
$shares[] = $user;
}
- return array_unique($shares);
+ return array("users" => array_unique($shares), "public" => $publicShare);
}
/**