Tenho um componente de tema que envia uma solicitação para uma API externa para buscar alguns dados durante o carregamento de uma página. No entanto, o token Bearer que uso para buscar esses dados é carregado naturalmente no script ao qual o cliente tem acesso. Existe alguma maneira de criar um plugin ou algo que me permita ocultar essas informações?
Sim, você deve realmente criar um plugin e definir um método de controlador que busque os dados para você.
Em seguida, a partir do código do frontend, chame o método do controlador, que injeta o token do portador no lado do servidor, inacessível para terceiros, e faz a chamada para a API externa.
[quote=“Richard - Communiteq, post:2, topic:238166, username:RGJ”]você deve realmente criar um plugin e definir um método de controlador que busque os dados para você.
[/quote]
Em vez de criar um novo controlador para fazer isso (o que não é claramente o que Richard recomendou), você pode facilmente adicioná-lo a um serializador existente, algo como
add_to_serializer(:current_user, :my_stuff) do
stuff = get_my_stuff_somehow
stuff
end
Descobrir quais serializadores estão disponíveis e qual você deseja é, esperançosamente, simples o suficiente (a maioria é bem fácil de adivinhar, mas você pode encontrá-los em app/serializers); pesquisar em GitHub - discourse/all-the-plugins por add_to_serializer deve fornecer muitos exemplos. E comece com GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins.
Mesmo que você não conheça Ruby ou Rails, o acima deve lhe dar uma boa ideia do que você precisa fazer. Se não, você pode perguntar em Marketplace com um orçamento.
Acho que é uma péssima ideia vincular uma dependência externa a um serializador @pfaffman
Se o serviço externo cair ou ficar lento, seu fórum também ficará inativo.
Ah. Bem, droga. Isso soa verdadeiro. :pessoa_dando_de_ombros:
@attj, este é um dos muitos assuntos em que confio mais no que Richard diz do que no que eu digo.
Receio que você precisará fazer o trabalho de adicionar uma rota e tal, o que é um número consideravelmente maior de linhas de código (provavelmente apenas dezenas). Acho que Discourse Category Home 🏠 é um que adiciona uma rota.
Acho que consegui escrever um plugin, mas preciso colocá-lo no GitHub para incluí-lo no meu app.yml. O que naturalmente expõe o token também. Existe alguma maneira de contornar isso?
Basta ler o token das configurações do site e inseri-lo lá após a instalação.
Faz muito sentido. Obrigado!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.