Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>tags/v12.0.0beta1
@@ -5,7 +5,7 @@ | |||
<description>Share provider which allows you to share files by mail</description> | |||
<licence>AGPL</licence> | |||
<author>Bjoern Schiessle</author> | |||
<version>1.1.0</version> | |||
<version>1.2.0</version> | |||
<namespace>ShareByMail</namespace> | |||
<category>other</category> | |||
<dependencies> | |||
@@ -17,6 +17,10 @@ | |||
<filesystem/> | |||
</types> | |||
<settings> | |||
<admin>OCA\ShareByMail\Settings\Admin</admin> | |||
</settings> | |||
<activity> | |||
<providers> | |||
<provider>OCA\ShareByMail\Activity</provider> |
@@ -0,0 +1,30 @@ | |||
/** | |||
* @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
$(function() { | |||
$('#sendPasswordMail').on('change', function() { | |||
var status = 'no'; | |||
if ($(this).is(':checked')) { | |||
status = 'yes'; | |||
} | |||
OC.AppConfig.setValue('sharebymail', 'sendpasswordmail', status); | |||
}); | |||
}); |
@@ -0,0 +1,67 @@ | |||
<?php | |||
/** | |||
* @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OCA\ShareByMail\Settings; | |||
use OCP\AppFramework\Http\TemplateResponse; | |||
use OCP\Settings\ISettings; | |||
class Admin implements ISettings { | |||
/** @var SettingsManager */ | |||
private $settingsManager; | |||
public function __construct(SettingsManager $settingsManager) { | |||
$this->settingsManager = $settingsManager; | |||
} | |||
/** | |||
* @return TemplateResponse | |||
*/ | |||
public function getForm() { | |||
$parameters = [ | |||
'sendPasswordMail' => $this->settingsManager->sendPasswordByMail() | |||
]; | |||
return new TemplateResponse('sharebymail', 'settings-admin', $parameters, ''); | |||
} | |||
/** | |||
* @return string the section ID, e.g. 'sharing' | |||
*/ | |||
public function getSection() { | |||
return 'sharing'; | |||
} | |||
/** | |||
* @return int whether the form should be rather on the top or bottom of | |||
* the admin section. The forms are arranged in ascending order of the | |||
* priority values. It is required to return a value between 0 and 100. | |||
* | |||
* E.g.: 70 | |||
*/ | |||
public function getPriority() { | |||
return 40; | |||
} | |||
} |
@@ -0,0 +1,49 @@ | |||
<?php | |||
/** | |||
* @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU Affero General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU Affero General Public License | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OCA\ShareByMail\Settings; | |||
use OCP\IConfig; | |||
class SettingsManager { | |||
/** @var IConfig */ | |||
private $config; | |||
private $defaultSetting = 'yes'; | |||
public function __construct(IConfig $config) { | |||
$this->config = $config; | |||
} | |||
/** | |||
* should the password for a mail share be send to the recipient | |||
* | |||
* @return bool | |||
*/ | |||
public function sendPasswordByMail() { | |||
$sendPasswordByMail = $this->config->getAppValue('sharebymail', 'sendpasswordmail', $this->defaultSetting); | |||
return $sendPasswordByMail === 'yes'; | |||
} | |||
} |
@@ -23,6 +23,7 @@ namespace OCA\ShareByMail; | |||
use OC\HintException; | |||
use OC\Share20\Exception\InvalidShare; | |||
use OCA\ShareByMail\Settings\SettingsManager; | |||
use OCP\Activity\IManager; | |||
use OCP\DB\QueryBuilder\IQueryBuilder; | |||
use OCP\Files\Folder; | |||
@@ -76,6 +77,9 @@ class ShareByMailProvider implements IShareProvider { | |||
/** @var IManager */ | |||
private $activityManager; | |||
/** @var SettingsManager */ | |||
private $settingsManager; | |||
/** | |||
* Return the identifier of this provider. | |||
* | |||
@@ -97,6 +101,7 @@ class ShareByMailProvider implements IShareProvider { | |||
* @param IMailer $mailer | |||
* @param IURLGenerator $urlGenerator | |||
* @param IManager $activityManager | |||
* @param SettingsManager $settingsManager | |||
*/ | |||
public function __construct( | |||
IDBConnection $connection, | |||
@@ -107,7 +112,8 @@ class ShareByMailProvider implements IShareProvider { | |||
ILogger $logger, | |||
IMailer $mailer, | |||
IURLGenerator $urlGenerator, | |||
IManager $activityManager | |||
IManager $activityManager, | |||
SettingsManager $settingsManager | |||
) { | |||
$this->dbConnection = $connection; | |||
$this->secureRandom = $secureRandom; | |||
@@ -118,6 +124,7 @@ class ShareByMailProvider implements IShareProvider { | |||
$this->mailer = $mailer; | |||
$this->urlGenerator = $urlGenerator; | |||
$this->activityManager = $activityManager; | |||
$this->settingsManager = $settingsManager; | |||
} | |||
/** | |||
@@ -299,6 +306,11 @@ class ShareByMailProvider implements IShareProvider { | |||
* @param string $shareWith | |||
*/ | |||
protected function sendPassword($filename, $initiator, $shareWith, $password) { | |||
if ($this->settingsManager->sendPasswordByMail() === false) { | |||
return; | |||
} | |||
$initiatorUser = $this->userManager->get($initiator); | |||
$initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator; | |||
$subject = (string)$this->l->t('Password to access »%s« shared to you by %s', [$filename, $initiatorDisplayName]); |
@@ -0,0 +1,18 @@ | |||
<?php | |||
/** @var array $_ */ | |||
use OCA\Federation\TrustedServers; | |||
/** @var \OCP\IL10N $l */ | |||
script('sharebymail', 'settings-admin'); | |||
?> | |||
<div id="ncShareByMailSettings" class="section"> | |||
<h2><?php p($l->t('Share by mail')); ?></h2> | |||
<em><?php p($l->t('Send a personalized link to a file or folder by mail.')); ?></em> | |||
<p> | |||
<input id="sendPasswordMail" type="checkbox" class="checkbox" <?php if($_['sendPasswordMail']) p('checked'); ?> /> | |||
<label for="sendPasswordMail"><?php p($l->t('Send password by mail')); ?></label> | |||
</p> | |||
</div> | |||
@@ -24,6 +24,7 @@ namespace OCA\ShareByMail\Tests; | |||
use OC\HintException; | |||
use OCA\ShareByMail\Settings\SettingsManager; | |||
use OCA\ShareByMail\ShareByMailProvider; | |||
use OCP\Files\IRootFolder; | |||
use OCP\IDBConnection; | |||
@@ -80,6 +81,9 @@ class ShareByMailProviderTest extends TestCase { | |||
/** @var \OCP\Activity\IManager | \PHPUnit_Framework_MockObject_MockObject */ | |||
private $activityManager; | |||
/** @var SettingsManager | \PHPUnit_Framework_MockObject_MockObject */ | |||
private $settingsManager; | |||
public function setUp() { | |||
parent::setUp(); | |||
@@ -99,6 +103,7 @@ class ShareByMailProviderTest extends TestCase { | |||
$this->urlGenerator = $this->getMockBuilder('\OCP\IUrlGenerator')->getMock(); | |||
$this->share = $this->getMockBuilder('\OCP\Share\IShare')->getMock(); | |||
$this->activityManager = $this->getMockBuilder('OCP\Activity\IManager')->getMock(); | |||
$this->settingsManager = $this->getMockBuilder(SettingsManager::class)->disableOriginalConstructor()->getMock(); | |||
$this->userManager->expects($this->any())->method('userExists')->willReturn(true); | |||
} | |||
@@ -140,7 +145,8 @@ class ShareByMailProviderTest extends TestCase { | |||
$this->logger, | |||
$this->mailer, | |||
$this->urlGenerator, | |||
$this->activityManager | |||
$this->activityManager, | |||
$this->settingsManager | |||
); | |||
} |
@@ -28,6 +28,7 @@ use OCA\FederatedFileSharing\DiscoveryManager; | |||
use OCA\FederatedFileSharing\FederatedShareProvider; | |||
use OCA\FederatedFileSharing\Notifications; | |||
use OCA\FederatedFileSharing\TokenHandler; | |||
use OCA\ShareByMail\Settings\SettingsManager; | |||
use OCA\ShareByMail\ShareByMailProvider; | |||
use OCP\Share\IProviderFactory; | |||
use OC\Share20\Exception\ProviderException; | |||
@@ -149,18 +150,19 @@ class ProviderFactory implements IProviderFactory { | |||
return null; | |||
} | |||
$l = $this->serverContainer->getL10N('sharebymail'); | |||
$settingsManager = new SettingsManager($this->serverContainer->getConfig()); | |||
$this->shareByMailProvider = new ShareByMailProvider( | |||
$this->serverContainer->getDatabaseConnection(), | |||
$this->serverContainer->getSecureRandom(), | |||
$this->serverContainer->getUserManager(), | |||
$this->serverContainer->getLazyRootFolder(), | |||
$l, | |||
$this->serverContainer->getL10N('sharebymail'), | |||
$this->serverContainer->getLogger(), | |||
$this->serverContainer->getMailer(), | |||
$this->serverContainer->getURLGenerator(), | |||
$this->serverContainer->getActivityManager() | |||
$this->serverContainer->getActivityManager(), | |||
$settingsManager | |||
); | |||
} | |||