Skip to content

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

@schiessle

Description

@schiessle

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

Metadata

Metadata

Type

No type

Projects

Status

☑️ Done

Status

🎉 Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions