Ho un componente tematico che invia una richiesta a un’API esterna per recuperare alcuni dati durante il caricamento di una pagina. Tuttavia, il token Bearer che uso per recuperare questi dati è naturalmente caricato nello script a cui il client ha accesso. Esiste un modo per creare un plugin o qualcos’altro che mi permetta di nascondere queste informazioni?
Sì, dovresti assolutamente creare un plugin e definire un metodo controller che recuperi i dati per te.
Quindi, dal codice frontend, chiama il metodo controller, che inietta il bearer token lato server, inaccessibile a terzi, ed effettua la chiamata all’API esterna.
Invece di creare un nuovo controller per farlo (che non è chiaramente ciò che Richard ha raccomandato) puoi aggiungerlo abbastanza facilmente a un serializer esistente, qualcosa come
add_to_serializer(:current_user, :my_stuff) do
stuff = get_my_stuff_somehow
stuff
end
Capire quali serializer sono disponibili e quale desideri è si spera abbastanza semplice (la maggior parte sono abbastanza facili da intuire, ma puoi trovarli in app/serializers); cercare su GitHub - discourse/all-the-plugins add_to_serializer dovrebbe fornire molti esempi. E inizia con GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins.
Anche se non conosci Ruby o Rails, quanto sopra dovrebbe darti una buona idea di cosa devi fare. In caso contrario, puoi chiedere in Marketplace con un budget.
Penso che sia una pessima idea collegare una dipendenza esterna a un serializzatore @pfaffman
Se il servizio esterno va giù o è lento, anche il tuo forum sarà giù.
Oh. Beh, dannazione. Sembra vero. ![]()
@attj, questa è una delle tante questioni in cui mi fido di più di ciò che dice Richard che di ciò che dico io.
Temo che dovrai fare il lavoro per aggiungere una route e altro, che è un bel po’ di codice in più (probabilmente solo decine). Penso che Discourse Category Home 🏠 sia uno che aggiunge una route.
Credo di essere riuscito a scrivere un plugin ma devo metterlo su GitHub per includerlo nel mio app.yml. Il che naturalmente espone anche il token. C’è un modo per aggirare questo problema?
Leggi semplicemente il token dalle impostazioni del sito e inseriscilo lì dopo l’installazione.
Ha molto senso. Grazie!
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.