¿Pueden los usuarios hacer visible su User ID en su perfil?

¿Hay alguna manera de que los usuarios vean su propio ID de usuario cuando alguien ve su perfil?

Ahora mismo, los ID solo son visibles para los administradores a través del panel de control, pero me gustaría que los usuarios pudieran mostrar su ID públicamente.

¿Es esto algo que se puede habilitar a través de la configuración de administrador, un componente o un complemento?
¡Avísame! Por favor.

1 me gusta

Debería ser factible en un componente de tema. El ID de usuario está disponible sin una solicitud adicional, por lo que solo necesitarías algo de JavaScript para mostrarlo en un plugin outlet en la página de perfil.

3 Me gusta

¿Cuál es el caso de uso? ¿Por qué es importante conocer un número entero aleatorio?

4 Me gusta

Dado que una UID es inmutable (nunca cambia), puede actuar como una huella digital permanente de la cuenta de alguien. Los nombres de usuario pueden cambiar, por lo que para los tickets de soporte puede encontrar instantáneamente su cuenta, transacciones, sesiones de autenticación, etc. La UID no se puede falsificar y es única para siempre.
Me gustaría que la UID se incremente en 1 con cada nuevo usuario.

@Moin Gracias por la respuesta, fue útil. Sí, puedo ver la respuesta en Red → XHR → Respuesta. Perfecto. Pero no sé cómo mostrar la UID en el perfil de la cuenta del usuario. Quiero mostrarla aquí: https://mydomain.com/u//preferences/account
Pero dentro de los componentes de creación solo hay estas opciones: , Antes de la cabecera, Después de la cabecera y Pie de página

Esto es, en última instancia, lo que me gustaría.

He conseguido mostrar la UID con algo de JS, pero solo se muestra en la cabecera de la página principal

/my/preferences/account no es público; otros usuarios no pueden verlo, pero según tu caso de uso, podría ser suficiente para que el propio usuario vea su ID.

Necesitas encontrar un plugin outlet que esté cerca de donde quieres mostrar la información. Normalmente utilizo el botón en la barra de herramientas de desarrollador para hacerlos visibles en un foro. Verlos dentro del foro me facilita encontrar el mejor outlet. Puedes encontrar más información sobre cómo mostrar algo en un outlet en el Theme Developer Tutorial: 1. Introduction

De acuerdo, si quiero que todo el mundo lo vea (público), lo colocaría dentro de: midominio.com/u/<resumen_del_usuario>
Así que usando enableDevTools() dentro de la consola del navegador, creo que user-profile-secondary será un buen lugar.
Lo intentaré ahora.

Estoy atascado. ¿Cómo obtendría el id del usuario que estoy viendo? Porque api.getCurrentUser devuelve el usuario que ha iniciado sesión.

1 me gusta

Custom Components -- add button or text at any plugin outlet es un ejemplo de cómo fijar algún texto en cualquier lugar donde haya un plugin outlet (salida de complemento). Creo que necesitarás crear tu propio componente de tema para obtener acceso al user_id.

Creo que harías algo como esto al llamar a tu componente:

        <YourIdComponent
          @user={{@user}}
        />
1 me gusta

Pero ¿cómo obtengo el user.id de otra persona usando código?

Usando la publicación de @pfaffman de arriba, puedes tener un componente que use {{@user.id}}. Consulta Theme Developer Tutorial: 5. Building and using components, pero creo que puedes hacerlo en Editar CSS/HTML > JS en la Interfaz de Usuario de TC de Discourse, usando api.renderInOutlet().

3 Me gusta

Sí, api.renderInOutlet() fue de gran ayuda. Sin embargo, mi problema, que ahora es irrelevante ya que lo abordé de manera diferente, era que no sabía cómo recuperar el user.id del perfil que se estaba viendo.
¿Tienes alguna idea?

Aquí está la respuesta, pero parece que no tienes los conocimientos para entenderla.

1 me gusta

Creo que sería más fácil si eligieras un outlet que proporcione el modelo del usuario cuya página estás viendo.
El outlet que elegiste ofrece información sobre el tema pero no sobre los usuarios


Los *outlets* en el perfil de usuario como `user-post-names` proporcionan el modelo de usuario: https://github.com/discourse/discourse/blob/5b6d32804a1eb658fdc043b082336a17b4c1c944/frontend/discourse/app/templates/user.gjs#L220-L224 Con un *outlet* que proporciona el modelo deberías poder usar `@outletArgs` como el ejemplo en https://meta.discourse.org/t/theme-developer-tutorial-4-using-outlets-to-insert-and-replace-content/357799. El ejemplo allí usa `discovery-list-container-top` que proporciona `@outletArgs={{lazyHash category=@model.category tag=@model.tag}}`

Por eso elegiría un outlet que proporcione el modelo de usuario. Puedes ver el modelo cuando pasas el ratón por encima del outlet y ves el ID del usuario cuyo perfil estás mirando. Muchos ejemplos en el tutorial usan el servicio currentUser, que proporciona el ID del usuario que está actuando, que no es lo que parece que estás buscando.

1 me gusta
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 tu desglose fue perfecto; simplemente lo seguí y todo funciona a la perfección ahora. Gracias.

3 Me gusta