Les utilisateurs peuvent-ils rendre leur User ID visible sur leur profil ?

Existe un moyen pour les utilisateurs de voir leur propre User ID (identifiant d’utilisateur) lorsqu’on consulte leur profil ?

Actuellement, seuls les administrateurs peuvent voir les identifiants via le tableau de bord, mais j’aimerais que les utilisateurs puissent afficher leur identifiant publiquement.

Est-ce quelque chose qui peut être activé via les paramètres d’administration, un composant ou un plugin ?
Faites-moi savoir ! S’il vous plaît.

1 « J'aime »

Cela devrait être réalisable dans un composant de thème. L’identifiant de l’utilisateur est disponible sans requête supplémentaire, vous n’auriez donc besoin que de JavaScript pour l’afficher dans une sortie de plugin sur la page de profil.

3 « J'aime »

Quel est le cas d’utilisation ? Pourquoi est-il important de connaître un entier aléatoire ?

4 « J'aime »

Eh bien, comme un UID est immuable (ne change jamais), il peut servir d’empreinte digitale permanente pour le compte de quelqu’un. Les noms d’utilisateur peuvent changer, donc pour les tickets de support, cela permet de trouver instantanément leur compte, leurs transactions, leurs sessions d’authentification, etc. L’UID ne peut pas être falsifié et est unique pour toujours.
J’aimerais que l’UID s’incrémente de 1 à chaque nouvel utilisateur.

@Moin Merci pour la réponse, c’était utile. Oui, je peux voir la réponse dans Network → XHR → Response. Parfait. Mais je ne sais pas comment afficher l’UID sur le profil du compte de l’utilisateur. Je souhaite l’afficher ici : https://mydomain.com/u//preferences/account
Mais dans les composants de création, il n’y a que ces options : , Before Header, After Header et Footer

C’est ce que je souhaiterais ultimement.

J’ai réussi à afficher l’UID avec un peu de JS, mais il ne s’affiche que sur l’en-tête de la page principale.

/my/preferences/account n’est pas public ; les autres utilisateurs ne peuvent pas le voir, mais en fonction de votre cas d’utilisation, cela pourrait suffire pour que l’utilisateur lui-même voie son ID.

Vous devez trouver une sortie de plugin (plugin outlet) proche de l’endroit où vous souhaitez afficher l’information. J’utilise généralement le bouton dans la barre d’outils du développeur pour les rendre visibles sur un forum. Les voir dans le forum me facilite la recherche de la meilleure sortie. Vous pouvez trouver plus d’informations sur la façon d’afficher quelque chose dans une sortie dans le tutoriel Theme Developer Tutorial 1: Introduction.

D’accord, si je veux que tout le monde le voie (public), je le placerais dans : mondomaine.com/u/<résumé_utilisateur>
Donc, en utilisant enableDevTools() dans la console du navigateur, je pense que user-profile-secondary sera un bon endroit.
Je vais essayer maintenant.

Je suis bloqué. Comment puis-je obtenir l’id de l’utilisateur que je consulte ? Parce que api.getCurrentUser renvoie l’utilisateur connecté.

1 « J'aime »

Custom Components -- add button or text at any plugin outlet est un exemple de la façon d’insérer du texte n’importe où où il y a une sortie de plugin. Je pense que vous devrez créer votre propre composant de thème pour accéder à l’identifiant de l’utilisateur (user_id).

Je pense que vous feriez quelque chose comme ceci lorsque vous appelez votre composant :

        <YourIdComponent
          @user={{@user}}
        />
1 « J'aime »

Mais comment puis-je obtenir l’identifiant de l’utilisateur (user.id) de quelqu’un d’autre en utilisant du code ?

En utilisant la publication de @pfaffman ci-dessus, vous pouvez ensuite avoir un composant qui utilise {{@user.id}}. Voir Theme Developer Tutorial: 5. Building and using components, mais je pense que vous pouvez le faire dans Modifier CSS/HTML > JS dans l’interface utilisateur TC de Discourse, en utilisant api.renderInOutlet().

3 « J'aime »

Oui, api.renderInOutlet() a été très utile. Cependant, mon problème, qui est maintenant sans importance puisque je l’ai abordé différemment, était que je ne savais pas comment récupérer l’user.id du profil consulté.
Avez-vous des idées ?

Voici la réponse, mais il semble que vous n’ayez pas les connaissances de base pour la comprendre.

1 « J'aime »

Je pense qu’il serait plus facile si vous choisissiez une sortie qui fournit le modèle de l’utilisateur dont vous consultez la page.
La sortie que vous avez choisie fournit des informations sur le sujet mais pas sur les utilisateurs


Les sorties sur le profil utilisateur comme user-post-names fournissent le modèle utilisateur :

Avec une sortie qui fournit le modèle, vous devriez être en mesure d’utiliser @outletArgs comme l’exemple dans Theme Developer Tutorial: 4. Using Outlets to insert and replace content. L’exemple utilise discovery-list-container-top qui fournit @outletArgs={{lazyHash category=@model.category tag=@model.tag}}

C’est pourquoi je choisirais une sortie qui fournit le modèle utilisateur. Vous pouvez voir le modèle lorsque vous survolez la sortie et voyez l’ID de l’utilisateur dont vous consultez le profil. De nombreux exemples dans le tutoriel utilisent le service currentUser, qui fournit l’ID de l’utilisateur agissant, ce qui ne semble pas être ce que vous recherchez.

1 « J'aime »
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 votre analyse était parfaite — j’ai suivi vos indications et tout fonctionne à merveille maintenant. Merci.

3 « J'aime »