Gli utenti possono rendere visibile il loro User ID sul loro profilo?

C’è un modo per gli utenti di vedere il proprio ID utente quando qualcuno visualizza il proprio profilo?

Al momento, gli ID sono visibili solo agli amministratori tramite la dashboard, ma vorrei che gli utenti potessero visualizzare pubblicamente il proprio ID.

È qualcosa che può essere abilitato tramite le impostazioni di amministrazione, un componente o un plugin?
Fatemi sapere! Per favore

1 Mi Piace

Dovrebbe essere fattibile in un componente tema. L’ID utente è disponibile senza una richiesta aggiuntiva, quindi avresti bisogno solo di un po’ di JavaScript per mostrarlo in un plugin outlet sulla pagina del profilo.

3 Mi Piace

Qual è il caso d’uso? Perché è importante conoscere un numero intero casuale?

4 Mi Piace

Poiché un UID è immutabile (non cambia mai), può fungere da impronta digitale permanente per l’account di qualcuno. I nomi utente possono cambiare, quindi per i ticket di supporto può trovare istantaneamente il loro account, le transazioni, le sessioni di autenticazione, ecc… L’UID non può essere falsificato ed è unico per sempre.
Vorrei che l’UID si incrementasse di 1 con ogni nuovo utente.

@Moin Grazie per la risposta, è stata utile. Sì, posso visualizzare la risposta in Network → XHR → Response. Perfetto. Ma non so come mostrare l’UID sul profilo dell’account utente. Voglio visualizzarlo qui: https://mydomain.com/u//preferences/account
Ma all’interno della creazione dei componenti ci sono solo queste opzioni: , Before Header, After Header e Footer

Questo è in definitiva ciò che vorrei.

Sono riuscito a visualizzare l’UID con un po’ di JS, ma viene visualizzato solo nell’intestazione della pagina principale

/my/preferences/account non è pubblico; altri utenti non possono vederlo, ma in base al tuo caso d’uso, potrebbe essere sufficiente che l’utente stesso veda il proprio ID.

Devi trovare un plugin outlet vicino a dove vuoi mostrare le informazioni. Di solito uso il pulsante nella barra degli strumenti per sviluppatori per renderli visibili su un forum. Vederli all’interno del forum mi facilita trovare l’outlet migliore. Puoi trovare maggiori informazioni su come mostrare qualcosa in un outlet nel tutorial Theme Developer Tutorial 1: Introduction

Quindi, se voglio che tutti lo vedano (pubblico), lo inserirei in: mydomain.com/u/<riepilogo-utente>
Quindi, usando enableDevTools() nella console del browser, penso che user-profile-secondary sarà un buon posto.
Ci provo ora.

Sono bloccato. Come posso ottenere l’id dell’utente che sto visualizzando? Perché api.getCurrentUser restituisce l’utente connesso.

1 Mi Piace

Custom Components -- add button or text at any plugin outlet è un esempio di come inserire del testo in qualsiasi punto in cui sia presente un plugin outlet. Penso che dovrai creare il tuo componente tema per accedere allo user_id.

Penso che faresti qualcosa di simile quando chiami il tuo componente:

        <YourIdComponent
          @user={{@user}}
        />
1 Mi Piace

Ma come faccio a ottenere l’ID utente di qualcun altro usando il codice.

Usando il post di @pfaffman qui sopra, puoi quindi avere un componente che utilizza {{@user.id}}. Vedi Theme Developer Tutorial: 5. Building and using components, ma penso che tu possa farlo in Modifica CSS/HTML > JS nell’interfaccia utente TC di Discourse, usando api.renderInOutlet().

3 Mi Piace

Sì, api.renderInOutlet() è stato utilissimo. Tuttavia, il mio problema, che ora è irrilevante dato che l’ho affrontato in modo diverso, era che non sapevo come recuperare l’user.id del profilo visualizzato.
Hai qualche idea?

Ecco la risposta, ma sembra che tu non abbia le basi per capirla.

1 Mi Piace

Penso che sarebbe più facile se scegliessi un outlet che fornisca il modello dell’utente la cui pagina stai visualizzando.
L’outlet che hai scelto offre informazioni sull’argomento ma non sugli utenti


Gli outlet sul profilo utente come `user-post-names` forniscono il modello utente: https://github.com/discourse/discourse/blob/5b6d32804a1eb658fdc043b082336a17b4c1c944/frontend/discourse/app/templates/user.gjs#L220-L224 Con un outlet che fornisce il modello dovresti essere in grado di usare `@outletArgs` come nell'esempio in https://meta.discourse.org/t/theme-developer-tutorial-4-using-outlets-to-insert-and-replace-content/357799. L'esempio lì usa `discovery-list-container-top` che fornisce `@outletArgs={{lazyHash category=@model.category tag=@model.tag}}`

Ecco perché sceglierei un outlet che fornisce il modello utente. Puoi vedere il modello quando passi il mouse sull’outlet e vedi l’ID dell’utente il cui profilo stai guardando. Molti esempi nel tutorial usano il servizio currentUser, che fornisce l’ID dell’utente che sta agendo, che non sembra essere quello che stai cercando.

1 Mi Piace
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 la tua analisi è stata perfetta: ho seguito esattamente le tue indicazioni e ora tutto funziona senza problemi. Grazie.

3 Mi Piace