Значки очень популярны в нашем сообществе и являются отличным инструментом для вовлечения пользователей.
У нас есть премиум-категории в Discourse, доступные только подписчикам или платным участникам, и мы хотели бы награждать таких платных участников золотым значком на их профиле. Назовём его, например, «Особый участник».
Количество платных участников является коммерчески чувствительной информацией.
Это число может стать известно любому, кто имеет значок «Особый участник», даже если он скрыт на странице значка: они могут просто нажать на свой значок и увидеть всех остальных участников с таким же значком.
Есть ли способ запретить пользователям видеть, кто ещё имеет только один конкретный значок?
Я провёл несколько тестов, но не уверен, что это тоже идеально подходит для нашего варианта использования.
Флейр (из нашей скрытой группы) применяется к пользователю, но как только он вступает в любую из наших других групп, его флейр заменяется на флейр только что присоединённой группы.
На своём профиле он затем может выбрать только флейр публичной группы, полностью теряет доступ к своему особому флейру участника и не может применить его снова
Другие идеи сводились к принудительному назначению всем пользователям титула, например «Гость», но они могли бы просто изменить его на любой из титулов значков, которые у них есть. Я не думаю, что могу запретить пользователям менять свой Титул.
Мне нужен способ, чтобы гости и участники могли идентифицировать друг друга как таковые (например, с помощью значка), но при этом не раскрывать количество участников с «Экстра-Специальным» статусом.
Есть ли какие-либо другие инновационные решения или обходные пути?
Могу ли я что-то хитрое сделать с «Полями пользователя»?
Может быть, создать поле пользователя под названием «Статус», сделать его видимым на их профиле, но недоступным для редактирования ими. Могу ли я затем автоматически обновлять это поле «Статус» через вызов API? (мы отправляем вызов API, чтобы добавить их в Группу)
Однако решающим, вероятно, будет следующий вопрос:
Как мне это реализовать?
У меня уже есть вызов API, который срабатывает, когда кто-то становится участником: я отправляю запрос к Discourse, чтобы добавить его в группу. Могу ли я также отправить второй вызов API для обновления этого поля профиля?
Каждый раз, когда вы выполняете какое-либо действие в Discourse, вы можете проверить вкладку «Сеть» в инструментах разработчика вашего браузера, чтобы увидеть отправленный запрос.
Например, вот как я сохраняю профиль пользователя:
Вы видите URL-адрес запроса, в котором упоминается имя пользователя, а также тип запроса (PUT).
На вкладке «Payload» отображаются соответствующие данные: