Ocultando um token de API em um componente de tema

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?

1 curtida

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.

4 curtidas

[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.

2 curtidas

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.

4 curtidas

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?

2 curtidas

Basta ler o token das configurações do site e inseri-lo lá após a instalação.

3 curtidas

Faz muito sentido. Obrigado!

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.