Cleanup share by mail a bit

* Moved to ned IBootstrap
* Register everything via the capabilities api (So clients can use it as
  well)
  - This applies to the enforcing passwords
* Updated the sharing js code to use it
* removed app.php
* removed unused settings now
* typehints
* strict typing

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Signed-off-by: npmbuildbot[bot] <npmbuildbot[bot]@users.noreply.github.com>
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
This commit is contained in:
Roeland Jago Douma 2020-07-05 13:23:30 +02:00 committed by Morris Jobke
parent 52af709cea
commit 0bcc643d6e
No known key found for this signature in database
GPG Key ID: FE03C3A163FEDE68
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/>.
*
*/
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>
*

File diff suppressed because one or more lines are too long

View File

@ -178,7 +178,7 @@ export default class Config {
* @memberof Config
*/
get isMailShareAllowed() {
return OC.appConfig.shareByMailEnabled !== undefined
return OC.getCapabilities()['files_sharing']['sharebymail'] !== undefined
&& OC.getCapabilities()['files_sharing']['public']['enabled'] === true
}
@ -223,7 +223,7 @@ export default class Config {
* @memberof Config
*/
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\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.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\\SettingsManager' => $baseDir . '/../lib/Settings/SettingsManager.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\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.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\\SettingsManager' => __DIR__ . '/..' . '/../lib/Settings/SettingsManager.php',
'OCA\\ShareByMail\\ShareByMailProvider' => __DIR__ . '/..' . '/../lib/ShareByMailProvider.php',

View File

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

View File

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