aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2018-07-24 17:06:56 +0200
committerGitHub <noreply@github.com>2018-07-24 17:06:56 +0200
commit9b9d729acf8a6c46374d1ef55915c6fca988b191 (patch)
treea38045f49139774bafcc37b458ec711dcd2af796 /lib
parent7da815bb0403ebb072866b61779a84835b9a74b8 (diff)
parent911093549ebe3068dc7df918c552dc45a4ed43f5 (diff)
downloadnextcloud-server-9b9d729acf8a6c46374d1ef55915c6fca988b191.tar.gz
nextcloud-server-9b9d729acf8a6c46374d1ef55915c6fca988b191.zip
Merge pull request #10238 from nextcloud/add-support-for-sending-the-password-for-a-share-by-nextcloud-talk
Add support for sending the password for a share by Nextcloud Talk
Diffstat (limited to 'lib')
-rw-r--r--lib/composer/composer/autoload_classmap.php1
-rw-r--r--lib/composer/composer/autoload_static.php1
-rw-r--r--lib/private/Share20/Manager.php12
-rw-r--r--lib/private/Share20/Share.php17
-rw-r--r--lib/public/Share/IShare.php23
5 files changed, 53 insertions, 1 deletions
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index a060131979d..44b7cd5244f 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -611,6 +611,7 @@ return array(
'OC\\Core\\Migrations\\Version14000Date20180518120534' => $baseDir . '/core/Migrations/Version14000Date20180518120534.php',
'OC\\Core\\Migrations\\Version14000Date20180522074438' => $baseDir . '/core/Migrations/Version14000Date20180522074438.php',
'OC\\Core\\Migrations\\Version14000Date20180626223656' => $baseDir . '/core/Migrations/Version14000Date20180626223656.php',
+ 'OC\\Core\\Migrations\\Version14000Date20180710092004' => $baseDir . '/core/Migrations/Version14000Date20180710092004.php',
'OC\\Core\\Migrations\\Version14000Date20180712153140' => $baseDir . '/core/Migrations/Version14000Date20180712153140.php',
'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php',
'OC\\DB\\AdapterMySQL' => $baseDir . '/lib/private/DB/AdapterMySQL.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 4c6c55a59ad..815f94d5711 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -641,6 +641,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Migrations\\Version14000Date20180518120534' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180518120534.php',
'OC\\Core\\Migrations\\Version14000Date20180522074438' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180522074438.php',
'OC\\Core\\Migrations\\Version14000Date20180626223656' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180626223656.php',
+ 'OC\\Core\\Migrations\\Version14000Date20180710092004' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180710092004.php',
'OC\\Core\\Migrations\\Version14000Date20180712153140' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180712153140.php',
'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php',
'OC\\DB\\AdapterMySQL' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterMySQL.php',
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 76b523afd10..d0316b44c1a 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -827,10 +827,20 @@ class Manager implements IManager {
$expirationDateUpdated = true;
}
} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
+ // The new password is not set again if it is the same as the old
+ // one, unless when switching from sending by Talk to sending by
+ // mail.
$plainTextPassword = $share->getPassword();
- if (!$this->updateSharePasswordIfNeeded($share, $originalShare)) {
+ if (!empty($plainTextPassword) && !$this->updateSharePasswordIfNeeded($share, $originalShare) &&
+ !($originalShare->getSendPasswordByTalk() && !$share->getSendPasswordByTalk())) {
$plainTextPassword = null;
}
+ if (empty($plainTextPassword) && !$originalShare->getSendPasswordByTalk() && $share->getSendPasswordByTalk()) {
+ // If the same password was already sent by mail the recipient
+ // would already have access to the share without having to call
+ // the sharer to verify her identity
+ throw new \InvalidArgumentException('Can’t enable sending the password by Talk without setting a new password');
+ }
}
$this->pathCreateChecks($share->getNode());
diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php
index e54497c9b55..71c0453d9e5 100644
--- a/lib/private/Share20/Share.php
+++ b/lib/private/Share20/Share.php
@@ -63,6 +63,8 @@ class Share implements \OCP\Share\IShare {
private $expireDate;
/** @var string */
private $password;
+ /** @var bool */
+ private $sendPasswordByTalk = false;
/** @var string */
private $token;
/** @var int */
@@ -405,6 +407,21 @@ class Share implements \OCP\Share\IShare {
/**
* @inheritdoc
*/
+ public function setSendPasswordByTalk(bool $sendPasswordByTalk) {
+ $this->sendPasswordByTalk = $sendPasswordByTalk;
+ return $this;
+ }
+
+ /**
+ * @inheritdoc
+ */
+ public function getSendPasswordByTalk(): bool {
+ return $this->sendPasswordByTalk;
+ }
+
+ /**
+ * @inheritdoc
+ */
public function setToken($token) {
$this->token = $token;
return $this;
diff --git a/lib/public/Share/IShare.php b/lib/public/Share/IShare.php
index 5303cde45a6..43543fdad47 100644
--- a/lib/public/Share/IShare.php
+++ b/lib/public/Share/IShare.php
@@ -312,6 +312,29 @@ interface IShare {
*/
public function getPassword();
+
+ /**
+ * Set if the recipient can start a conversation with the owner to get the
+ * password using Nextcloud Talk.
+ *
+ * @param bool $sendPasswordByTalk
+ * @return \OCP\Share\IShare The modified object
+ * @since 14.0.0
+ */
+ public function setSendPasswordByTalk(bool $sendPasswordByTalk);
+
+ /**
+ * Get if the recipient can start a conversation with the owner to get the
+ * password using Nextcloud Talk.
+ * The returned value does not take into account other factors, like Talk
+ * being enabled for the owner of the share or not; it just cover whether
+ * the option is enabled for the share itself or not.
+ *
+ * @return bool
+ * @since 14.0.0
+ */
+ public function getSendPasswordByTalk(): bool;
+
/**
* Set the public link token.
*