@@ -60,10 +60,38 @@ To disable profile functionality for all users, add this to ``config.php``:
6060
6161 'profile.enabled' => false,
6262
63+ Profile field visibility settings
64+ ---------------------------------
65+
66+ Each profile field has its own **profile visibility ** setting (stored per user in the
67+ profile configuration):
68+
69+ - **Show to everyone ** (``show ``): visible to anyone, including unauthenticated visitors,
70+ *subject to the field's property scope *.
71+ - **Show to logged in accounts only ** (``show_users_only ``): visible only to authenticated
72+ users, *subject to the field's property scope *.
73+ - **Hide ** (``hide ``): never shown on profile surfaces regardless of property scope.
74+
75+ These correspond to the visibility options in **Personal settings ** -> **Personal info **
76+ -> **Edit your Profile visibility **.
77+
78+ .. important ::
79+ Effective visibility is the most restrictive result of **both ** controls:
80+ the profile visibility setting and the property scope.
81+
82+ Defaults
83+ ^^^^^^^^
84+
85+ By default, most profile fields are configured as **Show to everyone **, while some
86+ contact-related fields default to **Show to logged in accounts only **.
87+
88+ Administrators should note that these defaults are independent from the default
89+ *property scopes * described below.
90+
6391.. _profile-property-scopes :
6492
6593Property visibility scopes
66- ---------------------------
94+ --------------------------
6795
6896User properties (Display name, Address, Website, Role, etc.) have visibility scopes:
6997Private, Local, Federated, Published.
@@ -74,7 +102,6 @@ that all its attributes are visible.
74102The visibility scopes are:
75103
76104:Private:
77-
78105 The most restrictive level. Data is hidden from public profiles, federation, and
79106 public lookup. On the local server, it is only shown in specific features and
80107 typically only to authenticated users who have a recognized relationship with the
@@ -97,6 +124,13 @@ The visibility scopes are:
97124 **Public lookup server **: a public directory used to find users across Nextcloud instances.
98125 Only profile fields marked Published may be exposed there.
99126
127+ .. note ::
128+ Not all fields are eligible for lookup publication even if their scope is set to
129+ ``Published ``. Some fields are intentionally never published (for example Biography,
130+ Headline, Organisation, Role, Birthdate).
131+
132+ In other words: ``Published `` is necessary but not always sufficient for lookup publication.
133+
100134.. important ::
101135 A reachable profile does not mean all attributes are public. Each attribute is
102136 filtered by its own scope, and effective visibility can also depend on the
@@ -112,7 +146,8 @@ Scope visibility matrix
112146+------------+-------------------+-------------------------------------------------------+--------------------------------------+---------------------+----------------------+
113147| Scope | User themself [1] | Other users on same local instance | Public contexts (feature-dependent) | Trusted federation | Public lookup server |
114148+============+===================+=======================================================+======================================+=====================+======================+
115- | Private | Yes | Limited: authenticated + known-user relation required | No | No | No |
149+ | Private | Yes | Limited on profile surfaces: | No | No | No |
150+ | | | authenticated + known-user relation required [3] | | | |
116151+------------+-------------------+-------------------------------------------------------+--------------------------------------+---------------------+----------------------+
117152| Local | Yes | Yes | Yes (where applicable) [2] | No | No |
118153+------------+-------------------+-------------------------------------------------------+--------------------------------------+---------------------+----------------------+
@@ -125,16 +160,24 @@ Notes:
125160
1261611. Scope primarily governs exposure to others; owner access follows account/endpoint behavior.
1271622. Public-context visibility depends on feature path; scope alone does not guarantee display.
163+ 3. Some non-profile surfaces may exclude Private-scoped properties entirely (for example
164+ generated system address book cards), even for authenticated users.
165+
166+ .. note ::
167+ The matrix describes **profile visibility behavior **. Other consuming features may apply
168+ additional filtering and may not expose Private-scoped properties at all.
128169
129170Known-user rule for ``Private `` scope
130171^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
131172
132173For ``Private `` properties, Nextcloud may allow visibility on specific local feature
133174paths only when the requester is considered a *known user * of the target user.
134175
135- In practical terms, this relation is derived by server-side known-contact logic and is
136- directional (e.g., Alice might be in Bob's contacts, but Bob isn't necessarily in
137- Alice's). Users are always known to themselves.
176+ In practical terms, this relation is derived by server-side *known-contact matching *.
177+ In current Nextcloud versions this matching is primarily established via **phone-number
178+ matching ** (for example through the Talk mobile contact integration), and it is directional
179+ (e.g., Alice might be known to Bob, but Bob isn't necessarily known to Alice).
180+ Users are always known to themselves.
138181
139182What local users can see
140183^^^^^^^^^^^^^^^^^^^^^^^^
@@ -174,7 +217,9 @@ Recommended test procedure:
174217 - ``charlie `` (second local user for control)
175218
1762192. As ``alice ``, set distinct test values for profile fields and assign different
177- scopes (Private, Local, Federated, Published).
220+ scopes where possible (for example Private vs Local via the UI, and Federated/Published
221+ via API/administrative tooling if supported in your deployment).
222+
1782233. Verify as ``alice ``:
179224
180225 - Confirm owner-visible values as expected.
@@ -341,8 +386,12 @@ In short: tighter privacy reduces profile-based convenience and discoverability.
341386 - better integrate (cross-link? separate out?) with chapters covering sharing and federation
342387 - unify with User Manual
343388 - Dev Manual coverage
389+ - better distinguish user facing profile field visibility settings from admin instance-level scope settings
344390 - better "known user context" description
345391 - better "public contexts" description
392+ - better "lookup server" description/context
393+ - https://github.com/nextcloud/lookup-server?tab=readme-ov-file#what-is-lookup-server
394+ - https://github.com/nextcloud/lookup-server/blob/master/doc/architecture.md#overview
346395 - better "varies by feature/UI/API/app" description
347396 - more definite statements; more direct statements
348397 - simplify simplify simplify
0 commit comments