Плагин для приватных тем

:information_source: Краткое описание Приватные темы включает возможность создания приватных тем в обычной категории
:hammer_and_wrench: Ссылка на репозиторий GitHub - communiteq/discourse-private-topics · GitHub
:open_book: Руководство по установке Как установить плагины в Discourse

Возможности

Этот плагин позволяет добавить дополнительный параметр безопасности для категорий, чтобы пользователи могли получать доступ только к своим собственным темам. Вы также можете назначить одну или несколько групп, которые смогут просматривать все темы в категории. Обычно это используется для предоставления приватной поддержки в рамках публичного сообщества.

Обоснование

Мы искали более интегрированный способ оказания поддержки клиентам Communiteq, не создавая тысячи категорий. Кроме того, мы хотели избежать использования «Входящих сообщений групп», так как они кажутся слишком навязанными, и по умолчанию появляется уведомление «новое личное сообщение» каждый раз, когда кто-то публикует что-либо в любом ящике группы.

Ранее я писал об этой идее здесь.

Конфигурация

После включения плагина перейдите к настройкам безопасности вашей категории.

:warning: УБЕДИТЕСЬ, ЧТО ДОСТУП НЕ ОТКРЫТ ДЛЯ «ВСЕХ». :warning:
Если доступ должен быть широким, установите значение trust_level_0.

Параметры

Также существуют несколько глобальных настроек сайта:

  • private topics permitted groups: определяет группы, чьи сообщения всегда доступны. Это можно использовать, чтобы сообщения от сотрудников или службы поддержки не становились недоступными, даже если они находятся в приватной категории. Сообщения от пользователя системы по умолчанию также всегда отображаются. Если вы хотите, чтобы вводные сообщения категории были видны, убедитесь, что они опубликованы либо пользователем системы по умолчанию, либо пользователем из этой группы.

  • private topics admin sees all: при включении администраторы могут просматривать все темы, даже если они находятся в приватной категории. Отключите эту опцию, если хотите скрыть конфиденциальные данные от случайных взглядов.

Ограничения

Плагин фильтрует темы из списков тем, потока сообщений, поиска, сводки пользователя, активности пользователя, страницы «не найдено», уведомлений о подписке и сырых данных.

Темы включаются в значки, но значки не выдаются для непубличных категорий, поэтому вам следует удалить группу everyone из групп безопасности категории и добавить вместо неё trust_level_1.

Этот плагин новый и ещё не был тщательно протестирован.
Возможные «утечки»:

  • шина сообщений (иногда появляется и затем исчезает уведомление «есть одна новая или обновлённая тема»)

Планы / Дорожная карта

  • Добавить баннер категории, объясняющий, что в этой категории безопасно публиковать более или менее конфиденциальную информацию.
48 лайков
New category permission: can post/reply, but not read
Using PMs as a ticket system - auto-closing and closing reminders
Private category for each user
2023: The Year in Review
Using Form Templates in a private support capacity
Allow log file for topic and restricted to admin
Subcategory access for Users, not Groups?
Is there an option on Discourse to allow a logged-in member to see only the topics where they participated?
Notifications are coming again even after reading them [Private Topics plugin]
Posts visible to only OP and Moderators
Sudden realization about issue with Ticket System (private topics plugin)
Using discourse as a community ticket system
Way to make part of the post visible to author and staff only?
./launcher rebuild app error: bootstrap failed with exit code 234
Is there a way to create topics so that only topic creator can see their topics?
Private topics not showing up in Posts created report
Allow users publish AI Bot PM as new topic
Using Discourse for courses in a university program
Notifications are coming again even after reading them [Private Topics plugin]
Restrict specific topics in a category to members only
Is it possible to have a category where users only see their own topics
Restricted Categories for emails receiving any mail
Advice on a support forum
Discourse Private Replies
Mute DMs from a group
Information about permission settings
Author-only Topic (take 2)
Dashboard New Posts statistics broken
Use Discourse as a Private Support/Ticket System

Отличная работа, Ричард!

2 лайка

Вау, это потрясающе. Отличная работа!

3 лайка

Одно небольшое наблюдение — похоже, что даже администраторы не могут видеть эти ответы, если в группах не указаны staff или admins. Это намеренно?

Я только что создал две тестовые категории: в одной администратор был указан в группах, в другой — нет. Перемещение темы из одной категории в другую привело к потере видимости этой темы. Однако название темы просачивается через кнопку «Удалить категорию», которая показывает и называет тему, которая всё ещё присутствует, что блокирует удаление.

1 лайк

Да, я намеренно не прилагал никаких усилий для особого отношения к admin (в духе этого и этого), так как добавить группу тривиально, а это очень полезно при тестировании, когда админ подчиняется обычным правилам безопасности.

С другой стороны, я также не прилагал усилий для закрытия любых «утечек» для пользователей-администраторов, особенно потому, что это может вызвать проблемы при администрировании форума.

Это, однако, хорошее замечание, и я сделаю это явным в начальном посте этой темы.

2 лайка

Есть ли возможность отображать темы администраторам в просмотре категории, даже если название скрыто?

Не могли бы вы пояснить? Я не уверен, что понял, что вы имеете в виду.

Присутствие контента, который администраторы по умолчанию не видят, — довольно беспрецедентная ситуация.

Если вы не хотите отображать эти темы администраторам, пока их группа не будет явно названа, можем ли мы хотя бы добавить что-то в просмотр темы, чтобы уведомить их о наличии приватных тем, которые они не смогут увидеть? Это может быть что угодно: от отображения названий тем в списке тем с запретом на открытие самих тем (сейчас именно так: ссылки просто не работают), до добавления уведомления в верхней части категории, сообщающего администратору, что включены приватные темы, но у него в данный момент нет прав на их просмотр.

1 лайк

Понял, спасибо за объяснение.

На следующей неделе я добавлю настройку сайта, которая будет пропускать все фильтры для администраторов.

Я добавил настройку «Разрешенные группы для приватных тем», чтобы обозначить группы, чьи посты участников всегда видны. Это можно использовать, чтобы посты от сотрудников или службы поддержки не становились недоступными, даже если они находятся в приватной категории. Посты от пользователя системы по умолчанию также всегда отображаются. Убедитесь, что вводные сообщения категории либо от пользователя системы по умолчанию, либо от пользователя из этой группы.

Также я сделал функциональность, позволяющую администраторам видеть всё, настройкой по умолчанию. Чтобы вернуться к старому поведению, вы можете отключить опцию «Администратор видит все приватные темы». @stephen

1 лайк

Огромное спасибо за этот плагин, @RGJ — он будет очень полезен нашему сообществу.

Если я правильно понял, пользователи могут безопасно создавать темы в этой категории, включая конфиденциальную информацию?

1 лайк

Оно разработано так, чтобы обеспечивать тот же уровень конфиденциальности, что и групповой почтовый ящик: то есть доступ к темам в рамках этого режима будут иметь только автор темы и определённая группа, а также администраторы и любые лица, получившие доступ к базе данных.

Обратите внимание, что плагину всего 4 дня, и он всё ещё помечен как «бета», поэтому он пока не был тщательно протестирован в реальных условиях.

Возможно, мне стоит объявить награду, чтобы быстрее довести его до уровня, проверенного в бою: тот, кто найдёт способ обойти защиту и получит доступ к теме как неавторизованный обычный пользователь, получит 2 месяца бесплатного хостинга от Communiteq. За частичную утечку, например, за раскрытие заголовка темы, — один месяц.

5 лайков

Единственное, что я пока видел (и это очень мягкая утечка), — это в сводке профиля пользователя, где можно увидеть, что пользователь создал тему в одной из этих категорий через «Топ категорий». Однако ни одна из ссылок (на категорию или на количество) не раскрывает сами темы.

Редактирование: Я всё-таки нашёл один случай, но он связан с официальным плагином, а не с ядром. discourse-follow может раскрыть заголовок и URL приватных тем.

2 лайка

Спасибо!!!
Теперь это исправлено.

2 лайка

Я обнаружил ещё два утечки заголовков/URL, одна из которых связана с другой.

Шаги были следующими:

  • Пользователь 1 создаёт тему в другой категории, и пользователь 2 взаимодействует с ней, что приводит к подписке пользователя 2 на эту тему.
  • Тема перемещается в категорию «Приватные темы».
  • Тема получает дальнейшую активность, что вызывает уведомление для пользователя 2, несмотря на то что он не имеет к ней доступа (утечка A, незначительная).
  • Уведомление приводит к появлению обычной страницы «Ой! Эта страница не существует или является приватной», на которой в блоке «Недавние» отображаются несколько защищённых заголовков тем для пользователя 2 (утечка B, несколько более серьёзная).

4 лайка

Спасибо, @Stephen, ты супер!!!

Я исправил недавние темы на странице «Не найдено». Теперь они будут исключать все темы из приватных категорий.

2 лайка

Спасибо @RGJ

Действительно, в Discourse очень не хватало этой функции. Возможность создавать темы и отвечать на них, присущая большинству форумных платформ, была по-настоящему необходима в его основной структуре. Выражаю благодарность за вашу тщательную работу в этом вопросе.

1 лайк

Привет,

Я пробовал этот плагин для своего сообщества, и когда я с несколькими другими участниками попробовал его протестировать, он, похоже, не работал как задумано. Сообщения, созданные обычными участниками, видны всем остальным, а не только выбранным приватным группам. Возможно, этот плагин устарел, или я что-то сделал неправильно?

1 лайк

Кажется, в последней версии это сломано. Пожалуйста, подождите, пока я это исправлю.

1 лайк

Исправлено, просто обновите до новой версии, и всё будет в порядке.

Спасибо за сообщение!

Похоже, что теперь этот

<Input
   @type="checkbox"
   @checked={{this.args.outletArgs.category.custom_fields.private_topics_enabled}}
 />

заполняет поле значением t, тогда как раньше было true.

2 лайка