Do not send reshare permissions when creating a federated share
authorRoeland Jago Douma <rullzer@owncloud.com>
Mon, 22 Feb 2016 10:44:13 +0000 (11:44 +0100)
committerRoeland Jago Douma <rullzer@owncloud.com>
Tue, 1 Mar 2016 15:58:47 +0000 (16:58 +0100)
See https://github.com/owncloud/core/issues/22122#issuecomment-185637344

src/gui/shareusergroupwidget.cpp

index 00d4d7311fe02d9897a2afd67696f1fb3ad3ada6..ea3bbf7bbc89b85c63bc3b6c0e675b6ba3fa4234 100644 (file)
@@ -232,8 +232,21 @@ void ShareUserGroupWidget::slotCompleterActivated(const QModelIndex & index)
         return;
     }
 
-    _manager->createShare(_sharePath, Share::ShareType(sharee->type()),
-                          sharee->shareWith(), Share::PermissionDefault);
+    /*
+     * Don't send the reshare permissions for federataed shares
+     * https://github.com/owncloud/core/issues/22122#issuecomment-185637344
+     */
+    if (sharee->type() == Sharee::Federated) {
+        int permissions = Share::PermissionRead | Share::PermissionUpdate;
+        if (!_isFile) {
+            permissions |= Share::PermissionCreate | Share::PermissionDelete;
+        }
+        _manager->createShare(_sharePath, Share::ShareType(sharee->type()),
+                              sharee->shareWith(), Share::Permission(permissions));
+    } else {
+        _manager->createShare(_sharePath, Share::ShareType(sharee->type()),
+                              sharee->shareWith(), Share::PermissionDefault);
+    }
 
     _ui->shareeLineEdit->setEnabled(false);
     _ui->shareeLineEdit->setText(QString());
@@ -297,6 +310,15 @@ ShareWidget::ShareWidget(QSharedPointer<Share> share,
     connect(_ui->permissionShare,  SIGNAL(clicked(bool)), SLOT(slotPermissionsChanged()));
     connect(_ui->permissionsEdit,  SIGNAL(clicked(bool)), SLOT(slotEditPermissionsChanged()));
 
+    /*
+     * We don't show permssion share for federated shares
+     * https://github.com/owncloud/core/issues/22122#issuecomment-185637344
+     */
+    if (share->getShareType() == Share::TypeRemote) {
+        _ui->permissionShare->setVisible(false);
+        _ui->permissionToolButton->setVisible(false);
+    }
+
     connect(share.data(), SIGNAL(permissionsSet()), SLOT(slotPermissionsSet()));
     connect(share.data(), SIGNAL(shareDeleted()), SLOT(slotShareDeleted()));