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

Show system address book as read-only address book in contacts #19575

Closed
11 of 12 tasks
Tracked by #66
schiessle opened this issue Feb 21, 2020 · 45 comments
Closed
11 of 12 tasks
Tracked by #66

Show system address book as read-only address book in contacts #19575

schiessle opened this issue Feb 21, 2020 · 45 comments
Assignees
Labels
2. developing Work in progress enhancement feature: carddav Related to CardDAV internals
Milestone

Comments

@schiessle
Copy link
Member

schiessle commented Feb 21, 2020

In organizations it is quite common that you want to have a shared address book with the contact data of all your colleagues.

Today you can achieve this with a address book created within the contacts app and shared with all others. But this has some issues:

  1. If you share it read-only someone has to be in charge to keep it up to date
  2. If you share it read-write so that everyone can add their own contact data people have to maintain their information twice, once in "contacts" and once in the personal settings.
  3. If you share it read-write you risk that people delete contacts by accident, add contacts which doesn't belong to the address book, etc

All information from the personal settings are already written to a carddav system address book. So technically we already have everything we need in the back-end. The idea is to expose it to the contacts app for all users and via carddav in a read-only mode. This way:

  1. Every time someone updates their personal settings or if they are updated in a central user management like LDAP the address book will be updated as well.
  2. People don't have to maintain their information in multiple places
  3. You don't risk that people delete contacts by accident or add personal contacts which doesn't belong to the address book.

Of course there should be a Admin switch to enable/disable this behavior. In most organizations this will be quite useful but of course a shared hoster for example doesn't want to present all users in a address book to all the other users (Although keep in mind that they do it already though the "people menu" which can not be disabled so the feature suggested here has no additional impact on the users privacy). The feature should respect the existing sharing and user enumeration settings.

Acceptance criteria

  • Data sources
    1. User backend
    2. Profile
    • Respect profile privacy settings
  • Exposed as read-only CalDAV collection
    • Has to be listable in Contacts app
    • Has to be readable by CalDAV clients
    • Name: "Accounts" (should have localized display name, if possible)
  • Respects sharing settings for user enumeration
  • Do not show in share dialogue (would duplicate users)
  • Org chart continues to work
  • Mapping
    • Manager -> X-MANAGERSNAME (set by admin via user management, not the user)
      • Optional: map from LDAP
    • Display name -> FN
    • Primary email addresses -> EMAIL (without TYPE)
    • Secondary email addresses -> EMAIL (without TYPE)
    • Phone number -> TEL (without TYPE)
    • Organisation (to be renamed to Company) -> ORG
    • Role (to be renamed to Title) -> TITLE
    • Location -> ADR
    • Language -> LANG
    • Profile page https://cloud.domain.tld/u/<uid> (if enabled) -> URL
    • Optional: https://cloud.domain.tld/apps/spreed/?callUser=<uid> -> URL
    • Optional: Nextcloud groups -> CATEGORIES (if possible and OK with data privacy)

Work packages

@georgehrke
Copy link
Member

Duplicate of #693

@georgehrke georgehrke marked this as a duplicate of #693 Feb 21, 2020
@schiessle schiessle transferred this issue from nextcloud/contacts Feb 21, 2020
@schiessle
Copy link
Member Author

schiessle commented Feb 21, 2020

People think it makes more sense to have it in the server repo, although from my understanding it is mainly a contacts-app question if and how the app exposes the address book which already exists in the server. Nevertheless I will let others figure it out.

I think it is a well defined use case which makes sense to discuss independent from #693 which went in many different directions. That's why I prefer to keep it as a separate issue.

I don't see a privacy issue here because the exact same information are already exposed over the "people menu" which is always enabled (no way to disable it) while the suggested feature here would be opt-in.

@jospoortvliet

This comment was marked as off-topic.

@skjnldsv skjnldsv added the 0. Needs triage Pending check for reproducibility or if it fits our roadmap label Aug 20, 2020
@skjnldsv skjnldsv added 3. to review Waiting for reviews and removed 0. Needs triage Pending check for reproducibility or if it fits our roadmap labels Nov 7, 2020
@SomeFixItDude

This comment was marked as off-topic.

@adamshand

This comment was marked as off-topic.

@whiskeytangofoxy

This comment was marked as off-topic.

@ChristophWurst ChristophWurst added 1. to develop Accepted and waiting to be taken care of and removed 3. to review Waiting for reviews labels Mar 17, 2022
@jancborchardt
Copy link
Member

jancborchardt commented Mar 17, 2022

Very related issue, possibly duplicate @ChristophWurst nextcloud/contacts#2361

And also related app, for LDAP at least: https://github.com/nextcloud/ldap_contacts_backend

@scratch-a

This comment was marked as spam.

@miaulalala miaulalala added the feature: carddav Related to CardDAV internals label Apr 22, 2022
@ghost

This comment was marked as off-topic.

@ghost

This comment was marked as off-topic.

@ghost

This comment was marked as off-topic.

@ghost
Copy link

ghost commented Jun 24, 2022

I think the developers are doing their best. And I hope we will eventually find a solution. All the organizations I know use such a feature whether at Teams, Synology, ... and with Nextcloud we still have to add it manually. I don't think it's a permanent solution and believe sooner or later the feature will come.

Personally, I do not see any concerns of such a function. But we can talk about it here.

@nickvergessen @jancborchardt @ChristophWurst What speaks for the moment against such a function?

@ghost

This comment was marked as off-topic.

@ghost

This comment was marked as off-topic.

@nickvergessen

This comment was marked as off-topic.

@ghost

This comment was marked as off-topic.

@ghost

This comment was marked as off-topic.

@SomeFixItDude

This comment was marked as off-topic.

@ChristophWurst
Copy link
Member

Idea: materialize all properties that are at least local. Those props should be readable to other users. Store the scope next to the prop value inside the vcard and when we send data to another server we filter out all properties with the local scope, so only published and federated data remains.

Alternative: build two materialized address books. One for local use (system address book in the new sense) and a federation addres book (system address book in the old sense).

@ChristophWurst
Copy link
Member

All information from the personal settings are already written to a carddav system address book. So technically we already have everything we need in the back-end.

We do not. The address book only contains federated and published data. Local data (which would be ok to expose to others) is missing as per above.

@schiessle
Copy link
Member Author

Idea: materialize all properties that are at least local. Those props should be readable to other users. Store the scope next to the prop value inside the vcard and when we send data to another server we filter out all properties with the local scope, so only published and federated data remains.

Alternative: build two materialized address books. One for local use (system address book in the new sense) and a federation addres book (system address book in the old sense).

I discussed the second option with @miaulalala but I like the first idea with the prop value if it is technically feasible to filter during the sync process. This would avoid having yet another address book.

@tcitworld
Copy link
Member

Local data (which would be ok to expose to others) is missing as per above.

There should be a way to opt out of system addressbook, for instance on a server where not everybody has to know each other. Otherwise you can just create lists of users, which can be troublesome.

@ChristophWurst
Copy link
Member

ChristophWurst commented May 2, 2023

Local data (which would be ok to expose to others) is missing as per above.

There should be a way to opt out of system addressbook, for instance on a server where not everybody has to know each other. Otherwise you can just create lists of users, which can be troublesome.

It is planned for the system address book to respects share enumeration settings. If an admin configures Nextcloud to now show other users, the system address book will also not show anyone else.

This is part of acceptance criteria "Respects sharing settings for user enumeration"

@ChristophWurst
Copy link
Member

I discussed the second option with @miaulalala but I like the first idea with the prop value if it is technically feasible to filter during the sync process. This would avoid having yet another address book.

We will give this a try. The change is tracked in #38021.

@ChristophWurst
Copy link
Member

Add repair step to remove all guest users from system address book

@miaulalala is this still to do or done with the filter for guest users when exposing the SAB?

@miaulalala
Copy link
Contributor

Add repair step to remove all guest users from system address book

@miaulalala is this still to do or done with the filter for guest users when exposing the SAB?

I thought that was done with the Migration but that doesn't seem to be the case. I will look into it.

@ChristophWurst ChristophWurst added 3. to review Waiting for reviews 2. developing Work in progress and removed 4. to release Ready to be released and/or waiting for tests to finish 3. to review Waiting for reviews labels May 16, 2023
@jakobroehrl

This comment was marked as off-topic.

@tcitworld

This comment was marked as off-topic.

@ChristophWurst
Copy link
Member

Add repair step to remove all guest users from system address book

@miaulalala is this still to do or done with the filter for guest users when exposing the SAB?

I thought that was done with the Migration but that doesn't seem to be the case. I will look into it.

Can't see what's missing in the current state. Seems fine.

@ChristophWurst
Copy link
Member

From my notes

Options

  1. Expose system address book as is, with guest users
  2. Exclude guest users
  3. Somehow try to separate guest users

Seems 1 is simplest, 3 is the best case, but 2 might be the best balance

So currently real users see guest users but guest users don't see anyone else. It's the simplest yet acceptable solution.

@chrisherzberg
Copy link

Hi all,
is their any update on this topic? We are using nextcloud 27.0.2 and would like to access the system address book via cardDav but we can´t. The personel addrssbook works fine.
Thanks
Christian

@julianwinkel
Copy link

Hi all, is their any update on this topic? We are using nextcloud 27.0.2 and would like to access the system address book via cardDav but we can´t. The personel addrssbook works fine. Thanks Christian

Do you try this: occ config:app:set dav system_addressbook_exposed --value="yes"
https://docs.nextcloud.com/server/27/admin_manual/groupware/contacts.html#address-book-sync

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: carddav Related to CardDAV internals
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.