summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/files_sharing/lib/Controller/ShareAPIController.php36
-rw-r--r--apps/sharebymail/lib/ShareByMailProvider.php2
-rw-r--r--lib/private/Share20/Manager.php37
3 files changed, 38 insertions, 37 deletions
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index d324af3e9f2..c0441485132 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -571,10 +571,6 @@ class ShareAPIController extends OCSController {
// Set password
if ($password !== '') {
$share->setPassword($password);
- // Shares shared by email have temporary passwords by default
- if ($shareType === IShare::TYPE_EMAIL) {
- $this->setSharePasswordExpirationTime($share);
- }
}
// Only share by mail have a recipient
@@ -1182,9 +1178,6 @@ class ShareAPIController extends OCSController {
$share->setPassword(null);
} elseif ($password !== null) {
$share->setPassword($password);
- if ($share->getShareType() === IShare::TYPE_EMAIL) {
- $this->setSharePasswordExpirationTime($share);
- }
}
if ($label !== null) {
@@ -1522,35 +1515,6 @@ class ShareAPIController extends OCSController {
}
/**
- * Set the share's password expiration time
- */
- private function setSharePasswordExpirationTime(IShare $share): void {
- if ($this->config->getSystemValue('allow_mail_share_permanent_password')) {
- // Sets password expiration date to NULL
- $share->setPasswordExpirationTime();
- return;
- }
- // Sets password expiration date
- $expirationTime = null;
- try {
- $now = new \DateTime();
- $expirationInterval = $this->config->getSystemValue('share_temporary_password_expiration_interval');
- if ($expirationInterval === '' || is_null($expirationInterval)) {
- $expirationInterval = 'P0DT15M';
- }
- $expirationTime = $now->add(new \DateInterval($expirationInterval));
- } catch (\Exception $e) {
- // Catches invalid format for system value 'share_temporary_password_expiration_interval'
- \OC::$server->getLogger()->logException($e, [
- 'message' => 'The \'share_temporary_password_expiration_interval\' system setting does not respect the DateInterval::__construct() format. Setting it to \'P0DT15M\''
- ]);
- $expirationTime = $now->add(new \DateInterval('P0DT15M'));
- } finally {
- $share->setPasswordExpirationTime($expirationTime);
- }
- }
-
- /**
* Since we have multiple providers but the OCS Share API v1 does
* not support this we need to check all backends.
*
diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php
index 1e767b7f859..70af8d0c746 100644
--- a/apps/sharebymail/lib/ShareByMailProvider.php
+++ b/apps/sharebymail/lib/ShareByMailProvider.php
@@ -198,7 +198,7 @@ class ShareByMailProvider implements IShareProvider {
// Sends share password to receiver when it's a permanent one (otherwise she will have to request it via the showShare UI)
// or to owner when the password shall be given during a Talk session
- if ($this->config->getSystemValue('allow_mail_share_permanent_password') || $share->getSendPasswordByTalk()) {
+ if ($this->config->getSystemValue('allow_mail_share_permanent_password', true) || $share->getSendPasswordByTalk()) {
$send = $this->sendPassword($share, $password);
if ($passwordEnforced && $send === false) {
$this->sendPasswordToOwner($share, $password);
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 4e87c37fedb..191b59d2b88 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -1148,11 +1148,18 @@ class Manager implements IManager {
// If a password is set. Hash it!
if (!empty($share->getPassword())) {
$share->setPassword($this->hasher->hash($share->getPassword()));
+ if ($share->getShareType() === IShare::TYPE_EMAIL) {
+ // Shares shared by email have temporary passwords
+ $this->setSharePasswordExpirationTime($share);
+ }
return true;
} else {
// Empty string and null are seen as NOT password protected
$share->setPassword(null);
+ if ($share->getShareType() === IShare::TYPE_EMAIL) {
+ $share->setPasswordExpirationTime(null);
+ }
return true;
}
} else {
@@ -1165,6 +1172,36 @@ class Manager implements IManager {
}
/**
+ * Set the share's password expiration time
+ */
+ private function setSharePasswordExpirationTime(IShare $share): void {
+ if ($this->config->getSystemValue('allow_mail_share_permanent_password', true)) {
+ // Sets password expiration date to NULL
+ $share->setPasswordExpirationTime();
+ return;
+ }
+ // Sets password expiration date
+ $expirationTime = null;
+ try {
+ $now = new \DateTime();
+ $expirationInterval = $this->config->getSystemValue('share_temporary_password_expiration_interval');
+ if ($expirationInterval === '' || is_null($expirationInterval)) {
+ $expirationInterval = 'P0DT15M';
+ }
+ $expirationTime = $now->add(new \DateInterval($expirationInterval));
+ } catch (\Exception $e) {
+ // Catches invalid format for system value 'share_temporary_password_expiration_interval'
+ \OC::$server->getLogger()->logException($e, [
+ 'message' => 'The \'share_temporary_password_expiration_interval\' system setting does not respect the DateInterval::__construct() format. Setting it to \'P0DT15M\''
+ ]);
+ $expirationTime = $now->add(new \DateInterval('P0DT15M'));
+ } finally {
+ $share->setPasswordExpirationTime($expirationTime);
+ }
+ }
+
+
+ /**
* Delete all the children of this share
* FIXME: remove once https://github.com/owncloud/core/pull/21660 is in
*