add setting to enable/disable federated group sharing
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
This commit is contained in:
parent
a22bc0e787
commit
c8631d607e
|
@ -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
|
||||||
*
|
*
|
||||||
|
|
|
@ -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(),
|
||||||
];
|
];
|
||||||
|
|
|
@ -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"'); ?> />
|
||||||
|
|
Loading…
Reference in New Issue