|
|
|
@ -28,6 +28,7 @@ namespace OCA\Files_Sharing;
|
|
|
|
|
use OCP\Capabilities\ICapability;
|
|
|
|
|
use OCP\Constants;
|
|
|
|
|
use OCP\IConfig;
|
|
|
|
|
use OCP\Share\IManager;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Class Capabilities
|
|
|
|
@ -38,9 +39,12 @@ class Capabilities implements ICapability {
|
|
|
|
|
|
|
|
|
|
/** @var IConfig */
|
|
|
|
|
private $config;
|
|
|
|
|
/** @var IManager */
|
|
|
|
|
private $shareManager;
|
|
|
|
|
|
|
|
|
|
public function __construct(IConfig $config) {
|
|
|
|
|
public function __construct(IConfig $config, IManager $shareManager) {
|
|
|
|
|
$this->config = $config;
|
|
|
|
|
$this->shareManager = $shareManager;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -51,7 +55,7 @@ class Capabilities implements ICapability {
|
|
|
|
|
public function getCapabilities() {
|
|
|
|
|
$res = [];
|
|
|
|
|
|
|
|
|
|
if ($this->config->getAppValue('core', 'shareapi_enabled', 'yes') !== 'yes') {
|
|
|
|
|
if (!$this->shareManager->shareApiEnabled()) {
|
|
|
|
|
$res['api_enabled'] = false;
|
|
|
|
|
$res['public'] = ['enabled' => false];
|
|
|
|
|
$res['user'] = ['send_mail' => false];
|
|
|
|
@ -60,10 +64,10 @@ class Capabilities implements ICapability {
|
|
|
|
|
$res['api_enabled'] = true;
|
|
|
|
|
|
|
|
|
|
$public = [];
|
|
|
|
|
$public['enabled'] = $this->config->getAppValue('core', 'shareapi_allow_links', 'yes') === 'yes';
|
|
|
|
|
$public['enabled'] = $this->shareManager->shareApiAllowLinks();
|
|
|
|
|
if ($public['enabled']) {
|
|
|
|
|
$public['password'] = [];
|
|
|
|
|
$public['password']['enforced'] = ($this->config->getAppValue('core', 'shareapi_enforce_links_password', 'no') === 'yes');
|
|
|
|
|
$public['password']['enforced'] = $this->shareManager->shareApiLinkEnforcePassword();
|
|
|
|
|
|
|
|
|
|
if ($public['password']['enforced']) {
|
|
|
|
|
$public['password']['askForOptionalPassword'] = false;
|
|
|
|
@ -73,28 +77,28 @@ class Capabilities implements ICapability {
|
|
|
|
|
|
|
|
|
|
$public['expire_date'] = [];
|
|
|
|
|
$public['multiple_links'] = true;
|
|
|
|
|
$public['expire_date']['enabled'] = $this->config->getAppValue('core', 'shareapi_default_expire_date', 'no') === 'yes';
|
|
|
|
|
$public['expire_date']['enabled'] = $this->shareManager->shareApiLinkDefaultExpireDate();
|
|
|
|
|
if ($public['expire_date']['enabled']) {
|
|
|
|
|
$public['expire_date']['days'] = $this->config->getAppValue('core', 'shareapi_expire_after_n_days', '7');
|
|
|
|
|
$public['expire_date']['enforced'] = $this->config->getAppValue('core', 'shareapi_enforce_expire_date', 'no') === 'yes';
|
|
|
|
|
$public['expire_date']['days'] = $this->shareManager->shareApiLinkDefaultExpireDays();
|
|
|
|
|
$public['expire_date']['enforced'] = $this->shareManager->shareApiLinkDefaultExpireDateEnforced();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$public['expire_date_internal'] = [];
|
|
|
|
|
$public['expire_date_internal']['enabled'] = $this->config->getAppValue('core', 'shareapi_default_internal_expire_date', 'no') === 'yes';
|
|
|
|
|
$public['expire_date_internal']['enabled'] = $this->shareManager->shareApiInternalDefaultExpireDate();
|
|
|
|
|
if ($public['expire_date_internal']['enabled']) {
|
|
|
|
|
$public['expire_date_internal']['days'] = $this->config->getAppValue('core', 'shareapi_internal_expire_after_n_days', '7');
|
|
|
|
|
$public['expire_date_internal']['enforced'] = $this->config->getAppValue('core', 'shareapi_enforce_internal_expire_date', 'no') === 'yes';
|
|
|
|
|
$public['expire_date_internal']['days'] = $this->shareManager->shareApiInternalDefaultExpireDays();
|
|
|
|
|
$public['expire_date_internal']['enforced'] = $this->shareManager->shareApiInternalDefaultExpireDateEnforced();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$public['expire_date_remote'] = [];
|
|
|
|
|
$public['expire_date_remote']['enabled'] = $this->config->getAppValue('core', 'shareapi_default_remote_expire_date', 'no') === 'yes';
|
|
|
|
|
$public['expire_date_remote']['enabled'] = $this->shareManager->shareApiRemoteDefaultExpireDate();
|
|
|
|
|
if ($public['expire_date_remote']['enabled']) {
|
|
|
|
|
$public['expire_date_remote']['days'] = $this->config->getAppValue('core', 'shareapi_remote_expire_after_n_days', '7');
|
|
|
|
|
$public['expire_date_remote']['enforced'] = $this->config->getAppValue('core', 'shareapi_enforce_remote_expire_date', 'no') === 'yes';
|
|
|
|
|
$public['expire_date_remote']['days'] = $this->shareManager->shareApiRemoteDefaultExpireDays();
|
|
|
|
|
$public['expire_date_remote']['enforced'] = $this->shareManager->shareApiRemoteDefaultExpireDateEnforced();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$public['send_mail'] = $this->config->getAppValue('core', 'shareapi_allow_public_notification', 'no') === 'yes';
|
|
|
|
|
$public['upload'] = $this->config->getAppValue('core', 'shareapi_allow_public_upload', 'yes') === 'yes';
|
|
|
|
|
$public['upload'] = $this->shareManager->shareApiLinkAllowPublicUpload();
|
|
|
|
|
$public['upload_files_drop'] = $public['upload'];
|
|
|
|
|
}
|
|
|
|
|
$res['public'] = $public;
|
|
|
|
@ -106,17 +110,17 @@ class Capabilities implements ICapability {
|
|
|
|
|
|
|
|
|
|
// deprecated in favour of 'group', but we need to keep it for now
|
|
|
|
|
// in order to stay compatible with older clients
|
|
|
|
|
$res['group_sharing'] = $this->config->getAppValue('core', 'shareapi_allow_group_sharing', 'yes') === 'yes';
|
|
|
|
|
$res['group_sharing'] = $this->shareManager->allowGroupSharing();
|
|
|
|
|
|
|
|
|
|
$res['group'] = [];
|
|
|
|
|
$res['group']['enabled'] = $this->config->getAppValue('core', 'shareapi_allow_group_sharing', 'yes') === 'yes';
|
|
|
|
|
$res['group']['enabled'] = $this->shareManager->allowGroupSharing();
|
|
|
|
|
$res['group']['expire_date']['enabled'] = true;
|
|
|
|
|
$res['default_permissions'] = (int)$this->config->getAppValue('core', 'shareapi_default_permissions', Constants::PERMISSION_ALL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Federated sharing
|
|
|
|
|
$res['federation'] = [
|
|
|
|
|
'outgoing' => $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes') === 'yes',
|
|
|
|
|
'outgoing' => $this->shareManager->outgoingServer2ServerSharesAllowed(),
|
|
|
|
|
'incoming' => $this->config->getAppValue('files_sharing', 'incoming_server2server_share_enabled', 'yes') === 'yes',
|
|
|
|
|
// old bogus one, expire_date was not working before, keeping for compatibility
|
|
|
|
|
'expire_date' => ['enabled' => true],
|
|
|
|
|