Могут ли пользователи сделать свой User ID видимым в профиле?

Можно ли настроить так, чтобы пользователи видели свой User ID, когда кто-то просматривает их профиль?

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

Можно ли это включить через настройки администратора, компонент или плагин?
Дайте знать! Пожалуйста

Это должно быть выполнимо в компоненте темы. Идентификатор пользователя доступен без дополнительного запроса, поэтому вам понадобится только немного JavaScript, чтобы отобразить его в слоте плагина на странице профиля.

Какой сценарий использования? Почему важно знать случайное целое число?

@pfaffman Спасибо за ответ. Дело в том, что UID неизменяем (никогда не меняется), поэтому он может служить постоянным отпечатком для учётной записи пользователя. Имена пользователей могут меняться, поэтому в тикетах поддержки это позволяет мгновенно найти учётную запись, транзакции, сессии авторизации и т. д. UID нельзя подделать, и они остаются уникальными навсегда.
Я хотел бы, чтобы UID увеличивался на 1 с каждым новым пользователем.

@Moin Спасибо за ответ, он был полезен. Да, я могу просмотреть ответ в разделе Network → XHR → Response. Отлично. Но я не знаю, как отобразить UID в профиле пользователя. Я хочу показать его здесь: https://mydomain.com/u//preferences/account
Однако в разделе создания компонентов доступны только следующие опции: Before Header, After Header и Footer.

Вот что я в итоге хочу получить.

Мне удалось вывести UID с помощью JS, но он отображается только в заголовке главной страницы.

/my/preferences/account не является публичным; другие пользователи не могут это видеть, но, исходя из вашего случая использования, может быть достаточно, чтобы сам пользователь видел свой ID.

Вам нужно найти точку расширения (plugin outlet), которая находится рядом с тем местом, где вы хотите показать информацию. Обычно я использую кнопку в панели разработчика, чтобы сделать их видимыми на форуме. Видя их внутри форума, мне легче найти наилучшую точку расширения. Подробнее о том, как отобразить что-либо в точке расширения, вы можете узнать здесь: Theme Developer Tutorial: 1. Introduction

Хорошо, если я хочу, чтобы это видели все (публично), я должен разместить это в: mydomain.com/u/<user>/summary
Таким образом, с помощью enableDevTools() в консоли браузера я думаю, что user-profile-secondary будет хорошим местом.
Я попробую сейчас.

Я застрял. Как мне получить id пользователя, которого я просматриваю? Потому что api.getCurrentUser возвращает данные авторизованного пользователя.

Я просто добавил ID пользователя в плагин outlet: header-contents__after

Custom Components -- add button or text at any plugin outlet — это пример того, как вставить текст в любое место, где есть выход плагина. Думаю, вам понадобится создать собственный компонент темы, чтобы получить доступ к user_id.

При вызове вашего компонента вы, вероятно, сделаете что-то вроде этого:

        <YourIdComponent
          @user={{@user}}
        />

Но как мне получить user.id другого человека с помощью кода?

Используя пост @pfaffman выше, вы можете создать компонент, который использует {{@user.id}}. См. Theme Developer Tutorial: 5. Building and using components, но, думаю, это можно сделать в разделе Edit CSS/HTML > JS в интерфейсе Discourse TC, используя api.renderInOutlet().

Да, api.renderInOutlet() пришёл на помощь. Однако моя проблема, которая теперь уже неактуальна, так как я подошёл к ней иначе, заключалась в том, что я не знал, как получить user.id просматриваемого профиля.
Есть какие-нибудь идеи?

Вот ответ, но, похоже, у вас нет необходимой базы, чтобы его понять.

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

Выбранный вами outlet предоставляет информацию о теме, но не о пользователях.


Outlet’ы на странице профиля пользователя, такие как user-post-names, предоставляют модель пользователя:

С outlet’ом, который предоставляет модель, вы сможете использовать @outletArgs, как в примере на Theme Developer Tutorial: 4. Using Outlets to insert and replace content. В том примере используется discovery-list-container-top, который предоставляет @outletArgs={{lazyHash category=@model.category tag=@model.tag}}.

Вот почему я бы выбрал outlet, предоставляющий модель пользователя. Вы можете увидеть модель, наведя курсор на outlet, и увидеть ID пользователя, профиль которого вы просматриваете. Многие примеры в руководстве используют сервис currentUser, который предоставляет ID действующего пользователя, а это не то, что вам, кажется, нужно.

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer((api) => {
    
    api.renderInOutlet("user-post-names",
    <template>
        {{#if @outletArgs.model}}
            <div class="uid-label-profile">
                UID:
                <span class="uid-value-profile">
                {{ @outletArgs.model.id }}
                </span>
            </div>
        {{/if}}
    </template>
    );

});

@Moin, твой разбор был абсолютно точным — я просто последовал ему, и теперь всё работает безупречно. Спасибо.