Фон
Мы пытаемся настроить наш сайт так, чтобы найти баланс между открытым доступом и вопросами конфиденциальности:
- Сайт в целом является публичным: анонимные пользователи могут просматривать его, а поисковые системы — индексировать. Имена пользователей являются публичными.
- Реальные имена (полные имена) и профили считаются полупубличными; они должны быть доступны только другим участникам сообщества (не веб-краулерам или анонимным наблюдателям).
- Адреса электронной почты считаются полностью конфиденциальными; доступ к ним должны иметь только администраторы (и этот доступ отслеживается).
Discourse по умолчанию уже решает задачи (1) и (3). (Ура!) У нас возникают трудности с реализацией пункта (2).
При отключении опции «Отображать имя в сообщениях» и включении опции «Скрыть профили пользователей от публичного доступа» получается что-то вроде улучшения, но пункт (2) всё ещё не достигается. В результатах поиска пользователей и списках получателей значков по-прежнему отображаются полные имена. (*) Кроме того, даже в тех местах, где интерфейс не показывает полные имена, сервер всё равно отправляет их — например, в JSON для полученной темы каждый объект сообщения по-прежнему содержит заполненные поля «name» (и «display_username»?).
Мы хотим дать пользователям обещание: «Ваше реальное имя будет доступно только другим участникам сообщества», но не можем этого сделать, если сервер повсеместно раскрывает полные имена.
Предлагаемая функция
Как насчёт настройки «Ограничить раскрытие полных имён группами» со следующими свойствами:
- Значение настройки представляет собой белый список групп (с одним значением, означающим «все, даже анонимные пользователи»).
- Если запрос поступает из сессии клиента, соответствующей белому списку, сервер отвечает полными именами. В противном случае любое поле, которое должно содержать полное имя, получает значение null (или исключается из объекта и т. д.).
Мне кажется, что это решит нашу задачу (2) — и даже позволит нам установить порог отображения реальных имён на уровне TL1 (вместо TL0).
Мне пришло в голову, что то, о чём я прошу, может быть просто (
) более детализированной версией существующей настройки «Включить имена» (если её отключение делает то, что обещает на стороне сервера, и не раскрывает полные имена клиенту). Возможно, это сделало бы реализацию действительно простой… ![]()
Кажется ли вам эта функция правдоподобной для ядра Discourse?
(Или, возможно, это достижимо в виде плагина? Я бы предпочёл видеть её в ядре, но мне также важно иметь возможность действительно открыть наш сайт для публики).
(*: Предотвращение возможности для анонимных пользователей выполнять поиск по пользователям и просматривать списки получателей значков — и, следовательно, тривиально получать список всех наших пользователей — это совершенно отдельная тема для другой темы.)