Os usuários podem tornar seu User ID visível no perfil?

Existe alguma maneira de os usuários verem seu próprio ID de Usuário quando alguém visualiza seu perfil?

Atualmente, os IDs só são visíveis para administradores através do painel de controle, mas eu gostaria que os usuários pudessem exibir seu ID publicamente.

Isso é algo que pode ser ativado através das configurações de administrador, de um componente ou de um plugin?
Me avisem! Por favor

1 curtida

Deve ser possível fazer isso em um componente de tema. O ID do usuário está disponível sem uma solicitação adicional, então você só precisaria de algum JavaScript para exibi-lo em um plugin outlet na página de perfil.

3 curtidas

Qual é o caso de uso? Por que saber um número inteiro aleatório é importante?

4 curtidas

Bem, como um UID é imutável (nunca muda), ele pode funcionar como uma impressão digital permanente para a conta de alguém. Nomes de usuário podem mudar, então, para tíquetes de suporte, ele pode encontrar instantaneamente a conta, transações, sessões de autenticação, etc… O UID não pode ser falsificado e é único para sempre.
Eu gostaria que o UID incrementasse em 1 a cada novo usuário.

@Moin Obrigado pela resposta, foi útil. Sim, consigo ver a resposta em Rede → XHR → Resposta. Perfeito. Mas não sei como exibir o UID no perfil da conta do usuário. Quero exibi-lo aqui: https://mydomain.com/u//preferences/account
Mas dentro dos componentes de criação, existem apenas estas opções: , Antes do Cabeçalho, Depois do Cabeçalho e Rodapé

É basicamente isto que eu gostaria.

Consegui exibir o UID com algum JS, mas ele está aparecendo apenas no cabeçalho da página principal.

/my/preferences/account não é público; outros usuários não podem ver isso, mas com base no seu caso de uso, pode ser suficiente para o próprio usuário ver seu ID.

Você precisa encontrar um plugin outlet que esteja perto de onde você deseja mostrar a informação. Eu costumo usar o botão na barra de ferramentas do desenvolvedor para torná-los visíveis em um fórum. Vê-los dentro do fórum facilita encontrar o melhor outlet. Você pode encontrar mais informações sobre como mostrar algo em um outlet no Theme Developer Tutorial: 1. Introduction

Ok, então se eu quiser que todos vejam (público), eu colocaria dentro de: mydomain.com/u/<resumo_do_usuário>
Então, usando enableDevTools() no console do navegador, acho que user-profile-secondary será um bom lugar.
Vou tentar agora.

Estou travado. Como eu obteria o id do usuário que estou visualizando? Porque api.getCurrentUser retorna o usuário logado.

1 curtida

Custom Components -- add button or text at any plugin outlet é um exemplo de como fixar algum texto em qualquer lugar onde haja uma saída de plugin (plugin outlet). Eu acho que você precisará criar seu próprio componente de tema (theme component) para ter acesso ao user_id.

Eu acho que você faria algo assim ao chamar seu componente:

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

Mas como eu obtenho o user.id de outra pessoa usando código.

Usando a postagem acima de @pfaffman, você pode então ter um componente que usa {{@user.id}}. Veja Theme Developer Tutorial: 5. Building and using components, mas eu acho que você pode fazer isso em Editar CSS/HTML > JS na UI do TC do Discourse, usando api.renderInOutlet().

3 curtidas

Sim, api.renderInOutlet() foi muito útil. No entanto, meu problema, que agora é irrelevante, pois abordei-o de forma diferente, era que eu não sabia como recuperar o user.id do perfil que estava sendo visualizado.

Você tem alguma ideia?

Aqui está a resposta, mas parece que você não tem o conhecimento de base para entendê-la.

1 curtida

Acho que seria mais fácil se você escolhesse um outlet que fornecesse o modelo do usuário cuja página você está visualizando.
O outlet que você escolheu oferece informações sobre o tópico, mas não sobre os usuários


Os *outlets* no perfil do usuário, como `user-post-names`, fornecem o modelo do usuário: https://github.com/discourse/discourse/blob/5b6d32804a1eb658fdc043b082336a17b4c1c944/frontend/discourse/app/templates/user.gjs#L220-L224 Com um *outlet* que fornece o modelo, você deve ser capaz de usar `@outletArgs` como no exemplo em https://meta.discourse.org/t/theme-developer-tutorial-4-using-outlets-to-insert-and-replace-content/357799. O exemplo lá usa `discovery-list-container-top`, que fornece `@outletArgs={{lazyHash category=@model.category tag=@model.tag}}`

É por isso que eu escolheria um outlet que fornecesse o modelo do usuário. Você pode ver o modelo quando passa o mouse sobre o outlet e vê o ID do usuário cujo perfil você está olhando. Muitos exemplos no tutorial usam o serviço currentUser, que fornece o ID do usuário em ação, que não é o que você parece estar procurando.

1 curtida
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 sua análise foi perfeita — apenas a segui e tudo funciona perfeitamente agora. Obrigado.

3 curtidas