nextcloud/calendar

Default event visibility for shared calendars

bmolitor opened this issue · 10 comments

It would be helpful to have a default event visibility setting per calendar share.

Right now, visibility when shared can be controlled on a per-event basis: "show whole event", "show as busy", "hide event". I would like to be able to control this per-calendar or per-share.

I need to share some calendars only to show availability without disclosing event contents to sharees. I create most of my events using external apps (e.g. iOS Calendar, Lightning), which don't support the visibility setting, so new events are always created as "show whole event". To make use of the visibility setting, I would need to log in to the web frontend and edit every single event by hand, which is not feasible. The ideal solution tome would be to add either a

  • "default visibility when shared" setting to the calendar properties, or a
  • "[ ] share availability only" option to the sharing dialog.

Not sure if this wishlist item is better categorized as a calendar or core issue, since it concerns both.

won't fix

What you are looking for is #39

I need the same feature. I want to share my personal private calendar to a cloud user (per user share option) where the events are shown only as "I'm busy here" without Title and Description. Do I missing something or is this feature already present?

@phlegx As said above, we won't implement this feature. Free/Busy provides the same features. see the linked issue above.

Any reason why to not implement this feature? How can I share my calendar to a user with "See only free/busy" like here in the Google Calendar with the Free/Busy feature implemented in NX 13 described in issue #39 ?

Google Calendar

4 possible options:

  1. Read only (hide details, show only slot as busy)
  2. Read only (all details)
  3. Read and write
  4. Read and write + share managing

@georgehrke Sorry one more time on this issue: Is it difficult to implement this sharing feature as requested from @phlegx ? I see a lot of people asking for this feature and I would also like to have it. As I understand free/busy, it is more of a "I request a timeslot" and not a "let me see your free/busy times in the future". In my company we use shared calendars extensivly and the "show only free/busy" is very useful. And the integration with Applications is no problem as it is with free/busy. Is there a way we can make this feature happen? I am willing to dig in myself.

I am also very interested in this feature. My use case is that I have a work calendar which is synced to Nextcloud using a restricted account ("work_account") because I don’t want to give my work systems access to any (private) information that is not required (Principle of least privilege). I then have my regular Nextcloud user ("private_account") to which I have shared the work calendar with edit permissions. The "private_account" bundles all my calendars and I use DavDroid to sync the calendars of this one account with my smartphone. This works nicely because all calendars which are shared with "private_account" automatically appear and I don’t have to setup much when adding a new calendar to get them synced. The only issue is now that events that are set to private in my work calendar don’t end up in my "private_account". I can obviously not change the viability of the event itself because they should be private in my work calendar.

The only workaround for this is for me to setup syncing using the "work_account" on my private devices (DavDroid). This obviously also conflicts with Principle of least privilege because then my private devices would have access to work resources that are not required.

@georgehrke Can you reconsider or is there something wrong with my use case?

I can obviously not change the viability of the event itself because they should be private in my work calendar.

Why can you not change the visibility? Is the calendar shared with other people as well?

Can you reconsider or is there something wrong with my use case?

This issue is different. The original ticket describes a highest possible visibility. It was requested, that if you set it to busy, all public events become busy, all busy events stay busy, but private events stay private.

You are requesting to override the privacy setting completely

@georgehrke

Thanks for the clarification! You are right. I opened a new issue to avoid further confusion (#944) and answered your question there (yes).

I'm also interested by this feature at my office. I understand that Free/Busy should include this feature, but I can't figure what is the status of Free/Busy at this time.

So far I tested a small patch to do this, but it is in "dav", not in "calendar". I added into apps/dav/lib/CalDAV/CalendarObject.php the following lines in get() function, just after the "shows as busy if event is declared confidential" (in 20.0.0 sources):

// shows as busy if shared and color is #010101
$curUser = explode("/", $this->calendarInfo['principaluri'])[2];
$effUser = explode("/", $this->calendarInfo['{http://owncloud.org/ns}owner-principal'])[2];
$color = $this->calendarInfo['{http://apple.com/ns/ical/}calendar-color'];
if (($curUser != $effUser) and ($color == "#010101")) {
$this->createConfidentialObject($vObject);
}

With this modification, any exported calendar with #010101 color if fully "confidential".
I choose the color as trigger but it can be something else (i.e. calendar name), and only for test purpose. The best way should be to have a "only busy" option, but at this stage it is more complicated to do (and, clearly, I'm not sure how to do this).

Does this kind of change could be a usable approach?

I would also like to see this implemented. Both a settable default for the visibility property would come in handy, and also the ability to override it per share (maybe only in the more restricted direction).

I glossed over the other tickets mentioned here, and based on my understanding, this is different from what's discussed there.