|
|
@ -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], |
|
|
|