Merge pull request #21692 from nextcloud/cleanup/sharebymail

Cleanup share by mail a bit
This commit is contained in:
Roeland Jago Douma 2020-07-06 10:33:12 +02:00 committed by GitHub
commit 2a0c7e258a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 43 additions and 111 deletions

View File

@ -687,7 +687,7 @@ var m=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new Typ
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
var P=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,n,r;return t=e,(n=[{key:"isPublicUploadEnabled",get:function(){return document.getElementById("filestable")&&"yes"===document.getElementById("filestable").dataset.allowPublicUpload}},{key:"isShareWithLinkAllowed",get:function(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}},{key:"federatedShareDocLink",get:function(){return OC.appConfig.core.federatedCloudShareDoc}},{key:"defaultExpirationDateString",get:function(){var e="";if(this.isDefaultExpireDateEnabled){var t=window.moment.utc(),n=this.defaultExpireDate;t.add(n,"days"),e=t.format("YYYY-MM-DD")}return e}},{key:"defaultInternalExpirationDateString",get:function(){var e="";if(this.isDefaultInternalExpireDateEnabled){var t=window.moment.utc(),n=this.defaultInternalExpireDate;t.add(n,"days"),e=t.format("YYYY-MM-DD")}return e}},{key:"enforcePasswordForPublicLink",get:function(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}},{key:"enableLinkPasswordByDefault",get:function(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}},{key:"isDefaultExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnforced}},{key:"isDefaultExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnabled}},{key:"isDefaultInternalExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}},{key:"isDefaultInternalExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){return void 0!==OC.appConfig.shareByMailEnabled&&!0===OC.getCapabilities().files_sharing.public.enabled}},{key:"defaultExpireDate",get:function(){return OC.appConfig.core.defaultExpireDate}},{key:"defaultInternalExpireDate",get:function(){return OC.appConfig.core.defaultInternalExpireDate}},{key:"isResharingAllowed",get:function(){return!0===OC.appConfig.core.resharingAllowed}},{key:"isPasswordForMailSharesRequired",get:function(){return void 0!==OC.appConfig.shareByMail&&!0===OC.appConfig.shareByMail.enforcePasswordProtection}},{key:"allowGroupSharing",get:function(){return!0===OC.appConfig.core.allowGroupSharing}},{key:"maxAutocompleteResults",get:function(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||200}},{key:"minSearchStringLength",get:function(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}},{key:"passwordPolicy",get:function(){var e=OC.getCapabilities();return e.password_policy?e.password_policy:{}}}])&&O(t.prototype,n),r&&O(t,r),e}();r(290);function j(e,t,n,r,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,o)}function R(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){j(i,r,o,a,s,"next",e)}function s(e){j(i,r,o,a,s,"throw",e)}a(void 0)}))}} var P=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e)}var t,n,r;return t=e,(n=[{key:"isPublicUploadEnabled",get:function(){return document.getElementById("filestable")&&"yes"===document.getElementById("filestable").dataset.allowPublicUpload}},{key:"isShareWithLinkAllowed",get:function(){return document.getElementById("allowShareWithLink")&&"yes"===document.getElementById("allowShareWithLink").value}},{key:"federatedShareDocLink",get:function(){return OC.appConfig.core.federatedCloudShareDoc}},{key:"defaultExpirationDateString",get:function(){var e="";if(this.isDefaultExpireDateEnabled){var t=window.moment.utc(),n=this.defaultExpireDate;t.add(n,"days"),e=t.format("YYYY-MM-DD")}return e}},{key:"defaultInternalExpirationDateString",get:function(){var e="";if(this.isDefaultInternalExpireDateEnabled){var t=window.moment.utc(),n=this.defaultInternalExpireDate;t.add(n,"days"),e=t.format("YYYY-MM-DD")}return e}},{key:"enforcePasswordForPublicLink",get:function(){return!0===OC.appConfig.core.enforcePasswordForPublicLink}},{key:"enableLinkPasswordByDefault",get:function(){return!0===OC.appConfig.core.enableLinkPasswordByDefault}},{key:"isDefaultExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnforced}},{key:"isDefaultExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultExpireDateEnabled}},{key:"isDefaultInternalExpireDateEnforced",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnforced}},{key:"isDefaultInternalExpireDateEnabled",get:function(){return!0===OC.appConfig.core.defaultInternalExpireDateEnabled}},{key:"isRemoteShareAllowed",get:function(){return!0===OC.appConfig.core.remoteShareAllowed}},{key:"isMailShareAllowed",get:function(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&!0===OC.getCapabilities().files_sharing.public.enabled}},{key:"defaultExpireDate",get:function(){return OC.appConfig.core.defaultExpireDate}},{key:"defaultInternalExpireDate",get:function(){return OC.appConfig.core.defaultInternalExpireDate}},{key:"isResharingAllowed",get:function(){return!0===OC.appConfig.core.resharingAllowed}},{key:"isPasswordForMailSharesRequired",get:function(){return void 0!==OC.getCapabilities().files_sharing.sharebymail&&OC.getCapabilities().files_sharing.sharebymail.password.enforced}},{key:"allowGroupSharing",get:function(){return!0===OC.appConfig.core.allowGroupSharing}},{key:"maxAutocompleteResults",get:function(){return parseInt(OC.config["sharing.maxAutocompleteResults"],10)||200}},{key:"minSearchStringLength",get:function(){return parseInt(OC.config["sharing.minSearchStringLength"],10)||0}},{key:"passwordPolicy",get:function(){var e=OC.getCapabilities();return e.password_policy?e.password_policy:{}}}])&&O(t.prototype,n),r&&O(t,r),e}();r(290);function j(e,t,n,r,o,i,a){try{var s=e[i](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,o)}function R(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){j(i,r,o,a,s,"next",e)}function s(e){j(i,r,o,a,s,"throw",e)}a(void 0)}))}}
/** /**
* @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com> * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
* *

File diff suppressed because one or more lines are too long

View File

@ -178,7 +178,7 @@ export default class Config {
* @memberof Config * @memberof Config
*/ */
get isMailShareAllowed() { get isMailShareAllowed() {
return OC.appConfig.shareByMailEnabled !== undefined return OC.getCapabilities()['files_sharing']['sharebymail'] !== undefined
&& OC.getCapabilities()['files_sharing']['public']['enabled'] === true && OC.getCapabilities()['files_sharing']['public']['enabled'] === true
} }
@ -223,7 +223,7 @@ export default class Config {
* @memberof Config * @memberof Config
*/ */
get isPasswordForMailSharesRequired() { get isPasswordForMailSharesRequired() {
return (OC.appConfig.shareByMail === undefined) ? false : OC.appConfig.shareByMail.enforcePasswordProtection === true return (OC.getCapabilities()['files_sharing']['sharebymail'] === undefined) ? false : OC.getCapabilities()['files_sharing']['sharebymail']['password']['enforced']
} }
/** /**

View File

@ -1,27 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Robin Appelman <robin@icewind.nl>
*
* @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/>.
*
*/
use OCA\ShareByMail\AppInfo\Application;
$app = \OC::$server->query(Application::class);

View File

@ -9,7 +9,6 @@ return array(
'OCA\\ShareByMail\\Activity' => $baseDir . '/../lib/Activity.php', 'OCA\\ShareByMail\\Activity' => $baseDir . '/../lib/Activity.php',
'OCA\\ShareByMail\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php', 'OCA\\ShareByMail\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
'OCA\\ShareByMail\\Capabilities' => $baseDir . '/../lib/Capabilities.php', 'OCA\\ShareByMail\\Capabilities' => $baseDir . '/../lib/Capabilities.php',
'OCA\\ShareByMail\\Settings' => $baseDir . '/../lib/Settings.php',
'OCA\\ShareByMail\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php', 'OCA\\ShareByMail\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php',
'OCA\\ShareByMail\\Settings\\SettingsManager' => $baseDir . '/../lib/Settings/SettingsManager.php', 'OCA\\ShareByMail\\Settings\\SettingsManager' => $baseDir . '/../lib/Settings/SettingsManager.php',
'OCA\\ShareByMail\\ShareByMailProvider' => $baseDir . '/../lib/ShareByMailProvider.php', 'OCA\\ShareByMail\\ShareByMailProvider' => $baseDir . '/../lib/ShareByMailProvider.php',

View File

@ -24,7 +24,6 @@ class ComposerStaticInitShareByMail
'OCA\\ShareByMail\\Activity' => __DIR__ . '/..' . '/../lib/Activity.php', 'OCA\\ShareByMail\\Activity' => __DIR__ . '/..' . '/../lib/Activity.php',
'OCA\\ShareByMail\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php', 'OCA\\ShareByMail\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
'OCA\\ShareByMail\\Capabilities' => __DIR__ . '/..' . '/../lib/Capabilities.php', 'OCA\\ShareByMail\\Capabilities' => __DIR__ . '/..' . '/../lib/Capabilities.php',
'OCA\\ShareByMail\\Settings' => __DIR__ . '/..' . '/../lib/Settings.php',
'OCA\\ShareByMail\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php', 'OCA\\ShareByMail\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php',
'OCA\\ShareByMail\\Settings\\SettingsManager' => __DIR__ . '/..' . '/../lib/Settings/SettingsManager.php', 'OCA\\ShareByMail\\Settings\\SettingsManager' => __DIR__ . '/..' . '/../lib/Settings/SettingsManager.php',
'OCA\\ShareByMail\\ShareByMailProvider' => __DIR__ . '/..' . '/../lib/ShareByMailProvider.php', 'OCA\\ShareByMail\\ShareByMailProvider' => __DIR__ . '/..' . '/../lib/ShareByMailProvider.php',

View File

@ -1,4 +1,6 @@
<?php <?php
declare(strict_types=1);
/** /**
* @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org> * @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org>
* *
@ -27,23 +29,22 @@
namespace OCA\ShareByMail\AppInfo; namespace OCA\ShareByMail\AppInfo;
use OCA\ShareByMail\Capabilities; use OCA\ShareByMail\Capabilities;
use OCA\ShareByMail\Settings;
use OCP\AppFramework\App; use OCP\AppFramework\App;
use OCP\Util; use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
class Application extends App { class Application extends App implements IBootstrap {
public function __construct(array $urlParams = []) { public const APP_ID = 'sharebymail';
parent::__construct('sharebymail', $urlParams);
$settingsManager = \OC::$server->query(Settings\SettingsManager::class); public function __construct() {
$settings = new Settings($settingsManager); parent::__construct(self::APP_ID);
}
/** register capabilities */ public function register(IRegistrationContext $context): void {
$container = $this->getContainer(); $context->registerCapability(Capabilities::class);
$container->registerCapability(Capabilities::class); }
/** register hooks */ public function boot(IBootContext $context): void {
Util::connectHook('\OCP\Config', 'js', $settings, 'announceShareProvider');
Util::connectHook('\OCP\Config', 'js', $settings, 'announceShareByMailSettings');
} }
} }

View File

@ -1,4 +1,6 @@
<?php <?php
declare(strict_types=1);
/** /**
* @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org> * @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org>
* *
@ -23,26 +25,35 @@
namespace OCA\ShareByMail; namespace OCA\ShareByMail;
use OCA\ShareByMail\Settings\SettingsManager;
use OCP\Capabilities\ICapability; use OCP\Capabilities\ICapability;
class Capabilities implements ICapability { class Capabilities implements ICapability {
/** /** @var SettingsManager */
* Function an app uses to return the capabilities private $manager;
*
* @return array Array containing the apps capabilities public function __construct(SettingsManager $manager) {
* @since 8.2.0 $this->manager = $manager;
*/ }
public function getCapabilities() {
public function getCapabilities(): array {
return [ return [
'files_sharing' => 'files_sharing' =>
[ [
'sharebymail' => 'sharebymail' =>
[ [
'enabled' => true, 'enabled' => true,
'upload_files_drop' => ['enabled' => true], 'upload_files_drop' => [
'password' => ['enabled' => true], 'enabled' => true,
'expire_date' => ['enabled' => true] ],
'password' => [
'enabled' => true,
'enforced' => $this->manager->enforcePasswordProtection(),
],
'expire_date' => [
'enabled' => true,
],
] ]
] ]
]; ];

View File

@ -1,53 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
*
* @author 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;
use OCA\ShareByMail\Settings\SettingsManager;
class Settings {
/** @var SettingsManager */
private $settingsManager;
public function __construct(SettingsManager $settingsManager) {
$this->settingsManager = $settingsManager;
}
/**
* announce that the share-by-mail share provider is enabled
*
* @param array $settings
*/
public function announceShareProvider(array $settings) {
$array = json_decode($settings['array']['oc_appconfig'], true);
$array['shareByMailEnabled'] = true;
$settings['array']['oc_appconfig'] = json_encode($array);
}
public function announceShareByMailSettings(array $settings) {
$array = json_decode($settings['array']['oc_appconfig'], true);
$array['shareByMail']['enforcePasswordProtection'] = $this->settingsManager->enforcePasswordProtection();
$settings['array']['oc_appconfig'] = json_encode($array);
}
}

View File

@ -1,4 +1,6 @@
<?php <?php
declare(strict_types=1);
/** /**
* @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org> * @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org>
* *
@ -43,7 +45,7 @@ class SettingsManager {
* *
* @return bool * @return bool
*/ */
public function sendPasswordByMail() { public function sendPasswordByMail(): bool {
$sendPasswordByMail = $this->config->getAppValue('sharebymail', 'sendpasswordmail', $this->sendPasswordByMailDefault); $sendPasswordByMail = $this->config->getAppValue('sharebymail', 'sendpasswordmail', $this->sendPasswordByMailDefault);
return $sendPasswordByMail === 'yes'; return $sendPasswordByMail === 'yes';
} }
@ -53,7 +55,7 @@ class SettingsManager {
* *
* @return bool * @return bool
*/ */
public function enforcePasswordProtection() { public function enforcePasswordProtection(): bool {
$enforcePassword = $this->config->getAppValue('sharebymail', 'enforcePasswordProtection', $this->enforcePasswordProtectionDefault); $enforcePassword = $this->config->getAppValue('sharebymail', 'enforcePasswordProtection', $this->enforcePasswordProtectionDefault);
return $enforcePassword === 'yes'; return $enforcePassword === 'yes';
} }