Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Send invitations for shared calendars #26668

Open
Tracked by #20096 ...
kesselb opened this issue Apr 20, 2021 · 21 comments · May be fixed by #39702 or #45054
Open
Tracked by #20096 ...

Send invitations for shared calendars #26668

kesselb opened this issue Apr 20, 2021 · 21 comments · May be fixed by #39702 or #45054
Assignees
Labels
2. developing Work in progress enhancement feature: caldav Related to CalDAV internals standardisation

Comments

@kesselb
Copy link
Contributor

kesselb commented Apr 20, 2021

Ref: #15676

It's not possible (anymore) to send invitations for an event for shared calendars. This behavior is confusing for end users.

Allowing sharees to send invitation in shared calendars was a mistake back then, there are many unresolved topics, especially if the sharee is also an attendee of the event:

  • when editing, does the sharee edit for themselves or on behalf of the calendar owner?
  • when deleting, is the sharee declining the event for themselves or cancelling it for everyone?
  • ...

The CalDAV standard does not have answers to these problems yet. Until then, we should not allow sharees to send invitations in shared calendars.

https://sabre.io/dav/caldav-sharing/ mentions

Unfortunately there is no final RFC how shared calendars should work. Yet the drafts could be a starting point. draft-pot-caldav-sharing-00 describes those open issues:

  1. DAV:owner requirement for scheduling. I think this is
    problematic...

  2. I don't think we should allow sharees that have access to an
    invite for which they are the attendee for, via the organizers
    shared calendar, to allow them to make attendee-related changes.
    The entire collection should operate as if the operation is on
    behalf of the organizer.

We don't implement https://github.com/sabre-io/dav/blob/master/lib/CalDAV/Backend/SharingSupport.php interface yet. That might be something to start with. There is already some logic connected to the above interface in sabre that might be useful.

The example implementation https://github.com/sabre-io/dav/blob/c1afdc77a95efea6ee40c03c45f57c3c0c80ec22/lib/CalDAV/Backend/PDO.php#L1308-L1465 uses a database table calendarinstances that looks similar to oc_calendars and oc_dav_shares. For example calendarcolor is something we store with the calendar. But for a shared calendar the color is something a user may change. So this needs to go to oc_dav_shares (calendarinstance in the sabre example).

@ChristophWurst
Copy link
Member

Some related sharing limitations are discussed at #5050.

@favincen
Copy link

We don't implement https://github.com/sabre-io/dav/blob/master/lib/CalDAV/Backend/SharingSupport.php interface yet. That might be something to start with.

👍 ! Seems pretty close to the suggestion I made in #15676 (comment), regarding the issue that currently used "getUsersOwnCalendars" does not list calendars shared to the user, and that some kind of "getUserEditableCalendars" method would be of great help. 😇

@rasos
Copy link

rasos commented Apr 12, 2022

Workaround: Create a team meeting in your personal calendar, check sending e-mail notifications, and then change the assignment of the event to your team calendar. Drawback: if you change the date, nobody is notified again, unless you assign the event back to a calendar you own, do the shift and assign it back to the team calendar.

As this is a bit hard to explain and understand we think that an extra method "getUserEditableCalendars" that controls the Send email checkbox would be the experience that users expect. Now you see this checkbox even if you don't have the rights to send an e-mail (and you wonder why nobody confirms the event).

We always recommend that teams should create an extra user who then owns the team's root folder, addressbook and also calendar. Those should not belong to a person, as the team would loose those assets if a founder leaves the team.

@xeruf

This comment was marked as resolved.

@ChristophWurst

This comment was marked as resolved.

@xeruf
Copy link

xeruf commented May 6, 2022

Let me add some actual kind words :)
I have been wanting to setup Nextcloud for years, and finally got the chance in our open-source-friendly startup. I am in love with the diversity it offers and customizability, everyone is ready to adopt it - were it not for unpolished corners like these, that lead them to continue with Google (even though they themselves don't want to!) until they are resolved.
I so badly want Nextcloud to succeed and build a product together with you to displace Teams, GSuite and all their crap, even Github once Gitea federation is implemented, all with a SSO through a suite like Stackspin. But before all that, we need to develop a rock-solid foundation that convinces non-techy business users, too.

@rotdrop
Copy link
Contributor

rotdrop commented Feb 24, 2023

@ChristophWurst "It would": I totally agree. I just fear that I might at some point just implement it in my own NC instances and leave the community behind, just for lack of time. Anyhow, of course it is a very good idea -- or better: the name of the game -- to rather try to fix things upstream than to hack around downstream.

Just now I have posted to sabre-io: sabre-io/dav#1454 and sabre-io/vobject#614

My texts there are a little bit sparse. We will see what happens.

@Mer0me
Copy link

Mer0me commented May 5, 2023

The only workaround we found to resolve this issue at work is to use Thunderbird with client-side scheduling.
It's not perfect but we can send invitations from owned or shared calendar.

Limits of this solution :

  • The server is not up to date if the user doesn't refresh event when he receives an answer
  • If a user accept from the Nextcloud Mail App, the answer is never received by the organizer
  • When there is multiple attendees, only the organizer knows who have accepted/refused invitation, other attendees can only see their own status
  • In some case, when you accept too quickly an invitation just received, TB is not able to update the calendar
  • If a user invite from the Calendar App, attendees can accept with TB interface or click on the button in the mail body resulting in different behaviour
  • needs to deploy TB everywhere...

When moving from (even very old - 2010) Outlook/Exchange system, users can be disappointed to loose some functionalities.
It should be a top priority to resolve this issue in order to compete with O365 and GSuite in small/medium business context.

@rotdrop
Copy link
Contributor

rotdrop commented May 5, 2023

@Mer0me Do you see a chance to test my PR #36756?

@Mer0me
Copy link

Mer0me commented May 5, 2023

@rotdrop Tests are very difficult in a near-production environment with 400+ users. But I follow your PR since few weeks, I will post relevant information about it if I can.

@aleld
Copy link

aleld commented Jul 4, 2023

The only workaround we found to resolve this issue at work is to use Thunderbird with client-side scheduling. It's not perfect but we can send invitations from owned or shared calendar.

Limits of this solution :

* The server is not up to date if the user doesn't refresh event when he receives an answer

* If a user accept from the Nextcloud Mail App, the answer is never received by the organizer

* When there is multiple attendees, only the organizer knows who have accepted/refused invitation, other attendees can only see their own status

* In some case, when you accept too quickly an invitation just received, TB is not able to update the calendar

* If a user invite from the Calendar App, attendees can accept with TB interface or click on the button in the mail body resulting in different behaviour

* needs to deploy TB everywhere...

When moving from (even very old - 2010) Outlook/Exchange system, users can be disappointed to loose some functionalities. It should be a top priority to resolve this issue in order to compete with O365 and GSuite in small/medium business context.

This^

I am in the same position trying to get this work for a small business. If this will not be fixed within this year I can't hold on to nc anymore and am forced to move to O365 as much as I want to avoid that :(
I appreciate all of the amazing work done, but its barely not feasible in an work environment right now.

@ChristophWurst ChristophWurst linked a pull request Aug 8, 2023 that will close this issue
7 tasks
@ChristophWurst ChristophWurst added 2. developing Work in progress and removed 1. to develop Accepted and waiting to be taken care of labels Aug 9, 2023
@joshtrichards joshtrichards added the feature: caldav Related to CalDAV internals label Sep 1, 2023
@ChristophWurst ChristophWurst added 1. to develop Accepted and waiting to be taken care of and removed 2. developing Work in progress labels Oct 17, 2023
@ChristophWurst ChristophWurst added 2. developing Work in progress and removed 1. to develop Accepted and waiting to be taken care of labels Apr 24, 2024
@ChristophWurst
Copy link
Member

We have found the Sabre invitation plugin to skip invites if the organizer of the event is not the owner of the calendar. Right now that happens for shared calendars because \OCA\DAV\CalDAV\Calendar::getOwner overwrites \Sabre\CalDAV\Calendar::getOwner. Upstream returns the principaluri of the owner, we return the principaluri of the sharee.
We want to test if this revives the invites in shared calendars. We might need some adjustments for other places that use the getOwner method.

The method overwrite was added in owncloud/core#21964, before Sabre supported sharing

SebastianKrupinski added a commit that referenced this issue Apr 26, 2024
kesselb pushed a commit that referenced this issue May 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2. developing Work in progress enhancement feature: caldav Related to CalDAV internals standardisation
Projects
Status: 🏗️ In progress
Status: 🏗️ At engineering
💌 📅 👥 Groupware team
📄 To do (5-20 entries)