Signed-off-by: Carl Schwan <carl@carlschwan.eu>tags/v25.0.0beta1
@@ -524,6 +524,15 @@ class ShareAPIController extends OCSController { | |||
$permissions &= ~($permissions & ~$node->getPermissions()); | |||
} | |||
if ($share->getNode()->getStorage()->instanceOfStorage(SharedStorage::class)) { | |||
/** @var \OCA\Files_Sharing\SharedStorage $storage */ | |||
$inheritedAttributes = $share->getNode()->getStorage()->getShare()->getAttributes(); | |||
if ($inheritedAttributes !== null && $inheritedAttributes->getAttribute('permissions', 'download') === false) { | |||
$share->setHideDownload(true); | |||
} | |||
} | |||
if ($shareType === IShare::TYPE_USER) { | |||
// Valid user is required to share | |||
if ($shareWith === null || !$this->userManager->userExists($shareWith)) { | |||
@@ -550,14 +559,6 @@ class ShareAPIController extends OCSController { | |||
throw new OCSNotFoundException($this->l->t('Public link sharing is disabled by the administrator')); | |||
} | |||
if ($share->getNode()->getStorage()->instanceOfStorage(SharedStorage::class)) { | |||
/** @var \OCA\Files_Sharing\SharedStorage $storage */ | |||
$inheritedAttributes = $share->getNode()->getStorage()->getShare()->getAttributes(); | |||
if ($inheritedAttributes !== null && $inheritedAttributes->getAttribute('permissions', 'download') === false) { | |||
$share->setHideDownload(true); | |||
} | |||
} | |||
if ($publicUpload === 'true') { | |||
// Check if public upload is allowed | |||
if (!$this->shareManager->shareApiLinkAllowPublicUpload()) { |
@@ -697,6 +697,7 @@ export default { | |||
shareType: ShareTypes.SHARE_TYPE_LINK, | |||
password: share.password, | |||
expireDate: share.expireDate, | |||
attributes: JSON.stringify(this.fileInfo.shareAttributes), | |||
// we do not allow setting the publicUpload | |||
// before the share creation. | |||
// Todo: We also need to fix the createShare method in |
@@ -478,6 +478,7 @@ export default { | |||
shareWith: value.shareWith, | |||
password, | |||
permissions: this.fileInfo.sharePermissions & OC.getCapabilities().files_sharing.default_permissions, | |||
attributes: JSON.stringify(this.fileInfo.shareAttributes), | |||
}) | |||
// If we had a password, we need to show it to the user as it was generated |
@@ -47,12 +47,13 @@ export default { | |||
* @param {boolean} [data.sendPasswordByTalk=false] send the password via a talk conversation | |||
* @param {string} [data.expireDate=''] expire the shareautomatically after | |||
* @param {string} [data.label=''] custom label | |||
* @param {string} [data.attributes=null] Share attributes encoded as json | |||
* @return {Share} the new share | |||
* @throws {Error} | |||
*/ | |||
async createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label }) { | |||
async createShare({ path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes }) { | |||
try { | |||
const request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label }) | |||
const request = await axios.post(shareUrl, { path, permissions, shareType, shareWith, publicUpload, password, sendPasswordByTalk, expireDate, label, attributes }) | |||
if (!request?.data?.ocs) { | |||
throw request | |||
} |