Skip to content

Implement ownerless shares - #49073

Merged
provokateurin merged 10 commits into
masterfrom
feat/files_sharing/co-owner
Nov 25, 2024
Merged

Implement ownerless shares#49073
provokateurin merged 10 commits into
masterfrom
feat/files_sharing/co-owner

Conversation

@provokateurin

@provokateurinprovokateurin commented Nov 4, 2024

Copy link
Copy Markdown
Member

Summary

Can be tested with nextcloud/groupfolders#3401

Tests still need to be written, but other than that this is ready.
It doesn't work with files_external yet, but I think that is due to permissions (UI says there is no reshare permission).

I'm surprised how little lines had to be changed in the end, but the challenging part was exploring how this can be implemented and where things needs to be changed and fixed to make it work.

Behavior:

  • If the owner is deleted the shares will be deleted
  • If the owner is disabled the shares continue to exist
  • If the owner loses access (e.g. removed from group that had access to the Groupfolder) the shares will be deleted hidden

Checklist

$shares = [];
foreach ($providers as $provider) {
if ($isCoOwner) {
foreach ($node->getDirectoryListing() as $childNode) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This makes it a lot more expensive, can we tweak getSharesInFolder to make the $user filter optional instead?

@provokateurinprovokateurinNov 11, 2024

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't do this without a breaking change, as it would break provider implementations that don't expect to receive null.
Maybe that is fine though, as long as the providers only do database SELECTs where a null value is fine (but that would still result in unexpected results as nothing would be returned instead of everything).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Istead of null it could receive a keyword.

@provokateurin
provokateurinforce-pushed the feat/files_sharing/co-owner branch from dbee0fb to 0ee7f19CompareNovember 13, 2024 13:45
@provokateurin
provokateurin requested review from a team, ArtificialOwl, come-nc and icewind1991 and removed request for a teamNovember 13, 2024 13:45
@provokateurin
provokateurin marked this pull request as ready for review November 13, 2024 13:45
@provokateurin

Copy link
Copy Markdown
MemberAuthor

Added tests for everything 🎉

@provokateurinprovokateurin added 3. to review Waiting for reviews and removed 2. developing Work in progress labels Nov 13, 2024
@provokateurin
provokateurinforce-pushed the feat/files_sharing/co-owner branch 3 times, most recently from 4c63eba to cd4dc54CompareNovember 14, 2024 07:16
Comment threadapps/files_sharing/src/components/SharingEntry.vue Outdated
Comment threadlib/private/Share20/Manager.php Outdated
Comment threadapps/files_sharing/lib/Controller/ShareAPIController.php Outdated
@ArtificialOwl

Copy link
Copy Markdown
Member

maybe Ownerless instead of CoOwner ?

@provokateurin

Copy link
Copy Markdown
MemberAuthor

Sure I will go with that, even though it is still inaccurate :/

Signed-off-by: provokateurin <kate@provokateurin.de>
@provokateurin
provokateurinforce-pushed the feat/files_sharing/co-owner branch from cd4dc54 to 5ec57e4CompareNovember 25, 2024 08:56
@provokateurinprovokateurin changed the title Implement share co-owningImplement ownerless sharesNov 25, 2024
Signed-off-by: provokateurin <kate@provokateurin.de>
…ath()
Signed-off-by: provokateurin <kate@provokateurin.de>
… owner
Signed-off-by: provokateurin <kate@provokateurin.de>
Signed-off-by: provokateurin <kate@provokateurin.de>
@provokateurin
provokateurinforce-pushed the feat/files_sharing/co-owner branch from 5ec57e4 to c0db746CompareNovember 25, 2024 09:27
@nextcloudnextcloud locked and limited conversation to collaborators Nov 25, 2024
@nextcloudnextcloud unlocked this conversation Nov 25, 2024
Comment threadapps/files_sharing/lib/Controller/ShareAPIController.php
*
* @since 31.0.0
*/
interface IShareOwnerlessMount {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
interfaceIShareOwnerlessMount {
interfaceIShareOpenMount {
// interface IShareCollaborativeMount

Might be too far and too large a refactor at this point but just throwing in the idea.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm IShareCollaborativeMount doesn't sound too bad. @ArtificialOwl what do you think?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I also already did a rename of everything this morning, so doing it once more is not much work 🙈

Comment threadlib/public/Share/IManager.php
Comment threadlib/public/Share/IManager.php

@nfebenfebe left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool to the kwargs in action here.

@provokateurinprovokateurin added the pending documentation This pull request needs an associated documentation update label Nov 25, 2024
@provokateurin

Copy link
Copy Markdown
MemberAuthor

/compile

Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
@narcisgarcia

Copy link
Copy Markdown

Will this enhancement reach the expected behavior asked in
nextcloud/groupfolders#3456
and
#49619
?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to reviewWaiting for reviewsenhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@provokateurin@ArtificialOwl@narcisgarcia@icewind1991@susnux@nfebe@nextcloud-command