add setting to enable/disable federated group sharing

Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
This commit is contained in:
Bjoern Schiessle 2018-06-25 11:40:16 +02:00
parent a22bc0e787
commit c8631d607e
No known key found for this signature in database
GPG Key ID: 2378A753E2BF04F6
3 changed files with 63 additions and 2 deletions

View File

@ -30,6 +30,7 @@
namespace OCA\FederatedFileSharing; namespace OCA\FederatedFileSharing;
use OC\Share20\Share; use OC\Share20\Share;
use OCP\Federation\ICloudFederationProviderManager;
use OCP\Federation\ICloudIdManager; use OCP\Federation\ICloudIdManager;
use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Files\Folder; use OCP\Files\Folder;
@ -92,6 +93,9 @@ class FederatedShareProvider implements IShareProvider {
/** @var \OCP\GlobalScale\IConfig */ /** @var \OCP\GlobalScale\IConfig */
private $gsConfig; private $gsConfig;
/** @var ICloudFederationProviderManager */
private $cloudFederationProviderManager;
/** /**
* DefaultShareProvider constructor. * DefaultShareProvider constructor.
* *
@ -106,6 +110,7 @@ class FederatedShareProvider implements IShareProvider {
* @param IUserManager $userManager * @param IUserManager $userManager
* @param ICloudIdManager $cloudIdManager * @param ICloudIdManager $cloudIdManager
* @param \OCP\GlobalScale\IConfig $globalScaleConfig * @param \OCP\GlobalScale\IConfig $globalScaleConfig
* @param ICloudFederationProviderManager $cloudFederationProviderManager
*/ */
public function __construct( public function __construct(
IDBConnection $connection, IDBConnection $connection,
@ -118,7 +123,8 @@ class FederatedShareProvider implements IShareProvider {
IConfig $config, IConfig $config,
IUserManager $userManager, IUserManager $userManager,
ICloudIdManager $cloudIdManager, ICloudIdManager $cloudIdManager,
\OCP\GlobalScale\IConfig $globalScaleConfig \OCP\GlobalScale\IConfig $globalScaleConfig,
ICloudFederationProviderManager $cloudFederationProviderManager
) { ) {
$this->dbConnection = $connection; $this->dbConnection = $connection;
$this->addressHandler = $addressHandler; $this->addressHandler = $addressHandler;
@ -131,6 +137,7 @@ class FederatedShareProvider implements IShareProvider {
$this->userManager = $userManager; $this->userManager = $userManager;
$this->cloudIdManager = $cloudIdManager; $this->cloudIdManager = $cloudIdManager;
$this->gsConfig = $globalScaleConfig; $this->gsConfig = $globalScaleConfig;
$this->cloudFederationProviderManager = $cloudFederationProviderManager;
} }
/** /**
@ -967,6 +974,42 @@ class FederatedShareProvider implements IShareProvider {
return ($result === 'yes'); return ($result === 'yes');
} }
/**
* check if users from other Nextcloud instances are allowed to send federated group shares
*
* @return bool
*/
public function isOutgoingServer2serverGroupShareEnabled() {
if ($this->gsConfig->onlyInternalFederation()) {
return false;
}
$result = $this->config->getAppValue('files_sharing', 'outgoing_server2server_group_share_enabled', 'no');
return ($result === 'yes');
}
/**
* check if users are allowed to receive federated group shares
*
* @return bool
*/
public function isIncomingServer2serverGroupShareEnabled() {
if ($this->gsConfig->onlyInternalFederation()) {
return false;
}
$result = $this->config->getAppValue('files_sharing', 'incoming_server2server_group_share_enabled', 'no');
return ($result === 'yes');
}
/**
* check if federated group sharing is supported, therefore the OCM API need to be enabled
*
* @return bool
*/
public function isFederatedGroupSharingSupported() {
return $this->cloudFederationProviderManager->isReady();
}
/** /**
* Check if querying sharees on the lookup server is enabled * Check if querying sharees on the lookup server is enabled
* *

View File

@ -58,6 +58,9 @@ class Admin implements ISettings {
'internalOnly' => $this->gsConfig->onlyInternalFederation(), 'internalOnly' => $this->gsConfig->onlyInternalFederation(),
'outgoingServer2serverShareEnabled' => $this->fedShareProvider->isOutgoingServer2serverShareEnabled(), 'outgoingServer2serverShareEnabled' => $this->fedShareProvider->isOutgoingServer2serverShareEnabled(),
'incomingServer2serverShareEnabled' => $this->fedShareProvider->isIncomingServer2serverShareEnabled(), 'incomingServer2serverShareEnabled' => $this->fedShareProvider->isIncomingServer2serverShareEnabled(),
'federatedGroupSharingSupported' => $this->fedShareProvider->isFederatedGroupSharingSupported(),
'outgoingServer2serverGroupShareEnabled' => $this->fedShareProvider->isOutgoingServer2serverGroupShareEnabled(),
'incomingServer2serverGroupShareEnabled' => $this->fedShareProvider->isIncomingServer2serverGroupShareEnabled(),
'lookupServerEnabled' => $this->fedShareProvider->isLookupServerQueriesEnabled(), 'lookupServerEnabled' => $this->fedShareProvider->isLookupServerQueriesEnabled(),
'lookupServerUploadEnabled' => $this->fedShareProvider->isLookupServerUploadEnabled(), 'lookupServerUploadEnabled' => $this->fedShareProvider->isLookupServerUploadEnabled(),
]; ];

View File

@ -23,7 +23,6 @@ script('federatedfilesharing', 'settings-admin');
<?php p($l->t('Allow users on this server to send shares to other servers'));?> <?php p($l->t('Allow users on this server to send shares to other servers'));?>
</label> </label>
</p> </p>
<p> <p>
<input type="checkbox" name="incoming_server2server_share_enabled" id="incomingServer2serverShareEnabled" class="checkbox" <input type="checkbox" name="incoming_server2server_share_enabled" id="incomingServer2serverShareEnabled" class="checkbox"
value="1" <?php if ($_['incomingServer2serverShareEnabled']) print_unescaped('checked="checked"'); ?> /> value="1" <?php if ($_['incomingServer2serverShareEnabled']) print_unescaped('checked="checked"'); ?> />
@ -31,6 +30,22 @@ script('federatedfilesharing', 'settings-admin');
<?php p($l->t('Allow users on this server to receive shares from other servers'));?> <?php p($l->t('Allow users on this server to receive shares from other servers'));?>
</label><br/> </label><br/>
</p> </p>
<?php if($_['federatedGroupSharingSupported']): ?>
<p>
<input type="checkbox" name="outgoing_server2server_group_share_enabled" id="outgoingServer2serverGroupShareEnabled" class="checkbox"
value="1" <?php if ($_['outgoingServer2serverGroupShareEnabled']) print_unescaped('checked="checked"'); ?> />
<label for="outgoingServer2serverGroupShareEnabled">
<?php p($l->t('Allow users on this server to send shares to groups on other servers'));?>
</label>
</p>
<p>
<input type="checkbox" name="incoming_server2server_group_share_enabled" id="incomingServer2serverGroupShareEnabled" class="checkbox"
value="1" <?php if ($_['incomingServer2serverGroupShareEnabled']) print_unescaped('checked="checked"'); ?> />
<label for="incomingServer2serverGroupShareEnabled">
<?php p($l->t('Allow users on this server to receive group shares from other servers'));?>
</label><br/>
</p>
<?php endif; ?>
<p> <p>
<input type="checkbox" name="lookupServerEnabled" id="lookupServerEnabled" class="checkbox" <input type="checkbox" name="lookupServerEnabled" id="lookupServerEnabled" class="checkbox"
value="1" <?php if ($_['lookupServerEnabled']) print_unescaped('checked="checked"'); ?> /> value="1" <?php if ($_['lookupServerEnabled']) print_unescaped('checked="checked"'); ?> />