Будьте осторожны с конфиденциальными данными в этих полях. Поля не обнаруживаются в исходном коде, но могут стать видимыми при возникновении сбоев. Кроме того, результаты будут отображаться в инструменте поиска.
У меня есть два пользователя: derek_test (слева) и anon9 (справа). Поля «ID» и «Компания» заполнены в их профилях, но видны только друг другу. derek_test видит ID, а anon9 — Компания.
Примечание: Параметр Searchable относится к каталогу пользователей, а не к поиску по всему сайту. Искомые термины всё ещё будут видны через этот поиск.
Перепроверьте эти настройки после заполнения полей или создайте разрешения заранее, чтобы эти поля никогда не были доступны для просмотра.
Что видят пользователи, не вошедшие в систему? То есть, если поле доступно только администраторам, я предполагаю, что пользователи не смогут его увидеть даже после выхода из системы, верно?
Есть ли причина, по которой вы выбрали текстовое поле для настройки группы вместо group_list? Это немного удобнее для ввода групп, так как их можно выбирать, а не вводить названия вручную. Однако это работает по ID, поэтому код нужно немного изменить. Но это всё ещё работает, даже если вы переименуете группу.
Отличное замечание, я только что обновил это с учётом данного момента. Могу подтвердить, что пользователи, не вошедшие в систему, не видят это поле.
Честно говоря, я сделал это с помощью Claude Code, но он сообщил, что list_type: group недоступен в редакторе объектов — только как настройка верхнего уровня.
Так что это должно было бы выглядеть примерно так, но с фиксированным количеством доступных полей
Хм… Хотя настройки в редакторе объектов принимали list_type:group, я не смог преодолеть ошибку:
Я попробовал несколько разных преобразований, но не смог пройти дальше. Вердикт таков: «Тип groups в схемах объектов задокументирован, но интерфейс не реализован во фронтенде».
Привет, Алексей,
Можешь уточнить? Я не вижу проблемы. Сейчас там есть пункты 1 и 2. Твой запрос также касается скрытия полей от модераторов и администраторов? К слову, администраторам всё равно придётся создать это поле изначально.
Только что снова протестировал это на локальной чистой последней версии репозитория GitHub и на размещенном решении с последней сборкой — затронута только категория «Администратор», и он/она видит поле «Скрытый», если является участником группы, которой разрешено видеть это поле. Даже доступ модератора (как я думал ранее) не работает.
Случай:
Два пользователя: администратор и Alex_1.
Группа пользователей: L2_verified.
Поле пользователя: «Полное имя» (для всех пользователей: «Включено» везде, «Искать» — только «Выключено»).
У обоих пользователей имена: Alex Admin и Alex.
Настройки темы:
Включить компонент в этих темах (Foundation, Horizon)
Имя поля: «Полное имя»
Разрешенные группы: L2_verified
Результаты:
Оба не являются участниками L2_verified — никто не видит поле «Полное имя» (даже своё собственное).
Администратор является участником L2_verified — может видеть «Полное имя» Alex_1 (и своё собственное).
Alex_1 является участником L2_verified — не может видеть «Полное имя» ни своё, ни администратора.
Когда я предоставил администратору права Alex_1 — он/она может видеть «Полное имя» обоих: своё и администратора.
Мой инструмент Antigravity с Gemini 3 Pro High обнаружил корневую причину:
Выявлена корневая причина: Группа
L2_verified
существует, и
Alex_1
является её участником, НО уровень видимости группы установлен на 4 (только для сотрудников/владельцев).
Из-за этого ограничительного параметра Discourse не сообщает браузеру, что
Alex_1
является участником этой группы (если только он не является сотрудником или администратором). Следовательно, компонент темы проверяет список, не находит
L2_verified
и продолжает скрывать поле.
Исправление:
Перейдите в Группы → L2_verified → Управление → Взаимодействие.
Измените параметр Кто может видеть эту группу? на “Участники” или “Все”.
Сохраните изменения.
Обновите страницу как
Alex_1
(не администратор). Теперь всё должно работать!
Однако это пока не обходное решение — большинство наших групп скрыто от всех
Спасибо за этот замечательный компонент! Он стал отличной основой для управления приватностью пользователей на Discourse.
На основе вашей работы я разработал специальный форк с двусторонней (взаимной) видимостью. В нашем профессиональном сообществе нам требовалась модель «Взаимного доверия», при которой проверенные участники могут видеть реальные имена и бизнес-данные друг друга, оставаясь при этом полностью анонимными для широкой публики или непроверенных пользователей.
Ключевые особенности этого форка:
Взаимная логика: Поле раскрывается только если оба — и смотрящий, и владелец профиля — состоят в авторизованной группе.
Контроль со стороны персонала: Администраторы и модераторы сохраняют полный доступ к данным в целях безопасности и модерации.
Видимость для самого себя: Пользователи всегда могут видеть свои скрытые поля, даже если они ещё не вошли в авторизованную группу, что позволяет им управлять своим профилем.
Конфиденциальность «равный-равному»: Гарантируется, что даже проверенные пользователи не раскроют свою личность тем, кто не прошёл аналогичный уровень верификации.
План развития: В будущих обновлениях я планирую добавить детальные настройки групп, чтобы точно определять, какие группы могут видеть и быть видимыми (например, разрешить группе A видеть группу B, но не наоборот).
В настоящее время я дорабатываю документацию и планирую опубликовать этот вариант как отдельный «Продвинутый режим приватности» в новой теме, как только получу полный доступ к категории «Компоненты тем».
Тем временем, если кому-то нужна эта двусторонняя логика, вы можете ознакомиться с ней здесь: GitHub:https://github.com/AirVetra/discourse-hidden-user-fields-bidirectional
Всем, кто использует это, как предупреждение: я в итоге выбрал другой путь, отличный от этого компонента темы. Я обнаружил, что термины были видны при поиске, что являлось серьёзной уязвимостью. Добавляю уточнение: «Searchable» относится к каталогу пользователей, а не к поиску по сайту.
Давайте добавим unmaintained. Я оставлю это здесь, так как кому-то это может быть полезно, но мое последнее открытие стало для меня решающим фактором. Этого должно быть достаточно, чтобы кто-то обратил на это пристальное внимание.