Учитывая необходимость такого детального контроля доступа, возможно, стоит задуматься, является ли обычная публичная тема лучшим решением. Может быть, вы могли бы немного подробнее рассказать о вашем конкретном случае использования?
Хорошей отправной точкой действительно станет мой плагин private-replies. В нём есть функция под названием can_see_post_if_author_among, которая в настоящее время принимает тему. Вам следует изменить её так, чтобы она принимала пост. Вы должны хранить список разрешённых пользователей в пользовательском поле, привязанном к посту, и затем проверять просматривающего пользователя относительно этого списка.
Плагин также переопределяет логику контроля доступа для сырых постов, поиска, просмотра тем и активности профиля пользователя.
Тем не менее, я ожидаю, что вы столкнётесь с рядом проблем как с точки зрения производительности, так и с точки зрения пользовательского опыта, особенно если у вас нет опыта разработки плагинов для Discourse. Это может оказаться довольно сложной задачей, поэтому я ещё раз рекомендую вам подумать, является ли это наилучшим подходом для вашего случая использования.