diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index e44ca84a09f..66b2383ea7d 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -154,7 +154,11 @@ class ShareAPIController extends OCSController {
'share_type' => $share->getShareType(),
'uid_owner' => $share->getSharedBy(),
'displayname_owner' => $sharedBy !== null ? $sharedBy->getDisplayName() : $share->getSharedBy(),
+ // recipient permissions
'permissions' => $share->getPermissions(),
+ // current user permissions on this share
+ 'can_edit' => $this->canEditShare($share),
+ 'can_delete' => $this->canDeleteShare($share),
'stime' => $share->getShareTime()->getTimestamp(),
'parent' => null,
'expiration' => null,
diff --git a/apps/files_sharing/src/components/SharingEntry.vue b/apps/files_sharing/src/components/SharingEntry.vue
index 857b57adbd0..09d09d607fe 100644
--- a/apps/files_sharing/src/components/SharingEntry.vue
+++ b/apps/files_sharing/src/components/SharingEntry.vue
@@ -30,75 +30,80 @@
{{ title }}
-
-
- {{ t('files_sharing', 'Allow editing') }}
-
-
-
-
- {{ t('files_sharing', 'Can reshare') }}
-
-
-
-
- {{ config.isDefaultExpireDateEnforced
- ? t('files_sharing', 'Expiration date enforced')
- : t('files_sharing', 'Set expiration date') }}
-
-
- {{ t('files_sharing', 'Enter a date') }}
-
-
-
-
+
+
- {{ t('files_sharing', 'Note to recipient') }}
+ ref="canEdit"
+ :checked.sync="canEdit"
+ :value="permissionsEdit"
+ :disabled="saving">
+ {{ t('files_sharing', 'Allow editing') }}
+
+
+
+
+ {{ t('files_sharing', 'Can reshare') }}
+
+
+
+
+ {{ config.isDefaultExpireDateEnforced
+ ? t('files_sharing', 'Expiration date enforced')
+ : t('files_sharing', 'Set expiration date') }}
-
+ :first-day-of-week="firstDay"
+ :lang="lang"
+ :value="share.expireDate"
+ icon="icon-calendar-dark"
+ type="date"
+ :not-before="dateTomorrow"
+ :not-after="dateMaxEnforced"
+ @update:value="onExpirationChange">
+ {{ t('files_sharing', 'Enter a date') }}
+
+
+
+
+
+ {{ t('files_sharing', 'Note to recipient') }}
+
+
+
-
+
{{ t('files_sharing', 'Unshare') }}
diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue
index 4501d67cbbb..6e333be2491 100644
--- a/apps/files_sharing/src/components/SharingEntryLink.vue
+++ b/apps/files_sharing/src/components/SharingEntryLink.vue
@@ -123,7 +123,7 @@
:open.sync="open"
@close="onPasswordSubmit">
-
+
-
+
{{ t('files_sharing', 'Delete share') }}
'ownerDisplay',
'mimetype' => 'myMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
];
$data[] = [$share, $expected];
@@ -623,6 +625,8 @@ class ShareAPIControllerTest extends TestCase {
'displayname_file_owner' => 'ownerDisplay',
'mimetype' => 'myFolderMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
];
$data[] = [$share, $expected];
@@ -676,6 +680,8 @@ class ShareAPIControllerTest extends TestCase {
'displayname_file_owner' => 'ownerDisplay',
'mimetype' => 'myFolderMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
];
$data[] = [$share, $expected];
@@ -3431,6 +3437,8 @@ class ShareAPIControllerTest extends TestCase {
'mail_send' => 0,
'mimetype' => 'myMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [], false
];
// User backend up
@@ -3462,6 +3470,8 @@ class ShareAPIControllerTest extends TestCase {
'mail_send' => 0,
'mimetype' => 'myMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [
['owner', $owner],
['initiator', $initiator],
@@ -3509,6 +3519,53 @@ class ShareAPIControllerTest extends TestCase {
'mail_send' => 0,
'mimetype' => 'myMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
+ ], $share, [], false
+ ];
+
+ $share = \OC::$server->getShareManager()->newShare();
+ $share->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setSharedWith('recipient')
+ ->setSharedBy('initiator')
+ ->setShareOwner('currentUser')
+ ->setPermissions(\OCP\Constants::PERMISSION_READ)
+ ->setNode($file)
+ ->setShareTime(new \DateTime('2000-01-01T00:01:02'))
+ ->setTarget('myTarget')
+ ->setNote('personal note')
+ ->setId(42);
+ // User backend down
+ $result[] = [
+ [
+ 'id' => 42,
+ 'share_type' => \OCP\Share::SHARE_TYPE_USER,
+ 'uid_owner' => 'initiator',
+ 'displayname_owner' => 'initiator',
+ 'permissions' => 1,
+ 'stime' => 946684862,
+ 'parent' => null,
+ 'expiration' => null,
+ 'token' => null,
+ 'uid_file_owner' => 'currentUser',
+ 'displayname_file_owner' => 'currentUser',
+ 'note' => 'personal note',
+ 'label' => null,
+ 'path' => 'file',
+ 'item_type' => 'file',
+ 'storage_id' => 'storageId',
+ 'storage' => 100,
+ 'item_source' => 3,
+ 'file_source' => 3,
+ 'file_parent' => 1,
+ 'file_target' => 'myTarget',
+ 'share_with' => 'recipient',
+ 'share_with_displayname' => 'recipient',
+ 'mail_send' => 0,
+ 'mimetype' => 'myMimeType',
+ 'hide_download' => 0,
+ 'can_edit' => true,
+ 'can_delete' => true,
], $share, [], false
];
@@ -3554,6 +3611,8 @@ class ShareAPIControllerTest extends TestCase {
'mail_send' => 0,
'mimetype' => 'myMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [], false
];
@@ -3597,6 +3656,8 @@ class ShareAPIControllerTest extends TestCase {
'mail_send' => 0,
'mimetype' => 'myMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [], false
];
@@ -3646,6 +3707,8 @@ class ShareAPIControllerTest extends TestCase {
'url' => 'myLink',
'mimetype' => 'myMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [], false
];
@@ -3696,6 +3759,8 @@ class ShareAPIControllerTest extends TestCase {
'url' => 'myLink',
'mimetype' => 'myMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [], false
];
@@ -3739,6 +3804,8 @@ class ShareAPIControllerTest extends TestCase {
'mail_send' => 0,
'mimetype' => 'myFolderMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [], false
];
@@ -3785,6 +3852,8 @@ class ShareAPIControllerTest extends TestCase {
'mail_send' => 0,
'mimetype' => 'myFolderMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [], false
];
@@ -3829,6 +3898,8 @@ class ShareAPIControllerTest extends TestCase {
'mail_send' => 0,
'mimetype' => 'myFolderMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [], false
];
@@ -3873,6 +3944,8 @@ class ShareAPIControllerTest extends TestCase {
'mail_send' => 0,
'mimetype' => 'myFolderMimeType',
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [], false
];
@@ -3933,6 +4006,8 @@ class ShareAPIControllerTest extends TestCase {
'password' => 'password',
'send_password_by_talk' => false,
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [], false
];
@@ -3979,6 +4054,8 @@ class ShareAPIControllerTest extends TestCase {
'password' => 'password',
'send_password_by_talk' => true,
'hide_download' => 0,
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, [], false
];
@@ -4120,6 +4197,8 @@ class ShareAPIControllerTest extends TestCase {
'mimetype' => 'myMimeType',
'hide_download' => 0,
'label' => '',
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, false, []
];
@@ -4163,6 +4242,8 @@ class ShareAPIControllerTest extends TestCase {
'mimetype' => 'myMimeType',
'hide_download' => 0,
'label' => '',
+ 'can_edit' => false,
+ 'can_delete' => false,
], $share, true, [
'share_with_displayname' => 'recipientRoomName'
]