}
}
- // As a first approximation, set the set of permissions that can be granted
- // either to everything (resharing allowed) or nothing (no resharing).
- //
- // The correct value will be found with a propfind from ShareDialog.
- // (we want to show the dialog directly, not wait for the propfind first)
- SharePermissions maxSharingPermissions =
- SharePermissionRead
- | SharePermissionUpdate | SharePermissionCreate | SharePermissionDelete
- | SharePermissionShare;
- if (!resharingAllowed) {
- maxSharingPermissions = {};
- }
-
+ auto maxSharingPermissions = resharingAllowed? SharePermissions(accountState->account()->capabilities().shareDefaultPermissions()) : SharePermissions({});
ShareDialog *w = nullptr;
if (_shareDialogs.contains(localPath) && _shareDialogs[localPath]) {
}
}
- // Default permissions on creation
- int permissions = SharePermissionCreate | SharePermissionUpdate
- | SharePermissionDelete | SharePermissionShare;
_manager->createShare(_sharePath, Share::ShareType(sharee->type()),
- sharee->shareWith(), SharePermission(permissions), password);
+ sharee->shareWith(), _maxSharingPermissions, password);
}
_ui->shareeLineEdit->setEnabled(false);
return _capabilities["files_sharing"].toMap()["resharing"].toBool();
}
+int Capabilities::shareDefaultPermissions() const
+{
+ if(_capabilities["files_sharing"].toMap().contains("default_permissions")) {
+ return _capabilities["files_sharing"].toMap()["default_permissions"].toInt();
+ }
+
+ return {};
+}
+
bool Capabilities::clientSideEncryptionAvailable() const
{
auto it = _capabilities.constFind(QStringLiteral("end-to-end-encryption"));
int sharePublicLinkExpireDateDays() const;
bool sharePublicLinkMultiple() const;
bool shareResharing() const;
+ int shareDefaultPermissions() const;
bool chunkingNg() const;
bool userStatusNotification() const;
bool userStatus() const;