J’ai un composant de thème qui envoie une requête à une API externe pour récupérer des données lors du chargement d’une page. Cependant, le jeton Bearer que j’utilise pour récupérer ces données est naturellement chargé dans le script auquel le client a accès. Existe-t-il un moyen de créer un plugin ou quelque chose qui me permette de masquer ces informations ?
Oui, vous devriez en effet créer un plugin et définir une méthode de contrôleur qui récupère les données pour vous.
Ensuite, à partir du code frontend, appelez la méthode du contrôleur, qui injecte le jeton porteur côté serveur, inaccessible à tout tiers, et effectue l’appel à l’API externe.
Plutôt que de créer un nouveau contrôleur pour le faire (ce qui n’est pas clairement ce que Richard a recommandé), vous pouvez assez facilement l’ajouter à un sérialiseur existant, quelque chose comme
add_to_serializer(:current_user, :my_stuff) do
stuff = get_my_stuff_somehow
stuff
end
Trouver quels sérialiseurs sont disponibles et lequel vous voulez est, espérons-le, assez simple (la plupart sont assez faciles à deviner, mais vous pouvez les trouver dans app/serializers); rechercher sur GitHub - discourse/all-the-plugins add_to_serializer devrait fournir de nombreux exemples. Et commencez par GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins.
Même si vous ne connaissez pas Ruby ou Rails, ce qui précède devrait vous donner une assez bonne idée de ce que vous devez faire. Sinon, vous pouvez demander dans Marketplace avec un budget.
Je pense que c’est une très mauvaise idée d’intégrer une dépendance externe dans un sérialiseur @pfaffman
Si le service externe tombe en panne ou est lent, votre forum sera également en panne.
Oh. Eh bien, zut. Ça semble vrai. ![]()
@attj, c’est l’une des nombreuses questions pour lesquelles je fais plus confiance à ce que dit Richard qu’à ce que je dis.
Je crains que vous deviez faire le travail pour ajouter une route et autres, ce qui représente pas mal de lignes de code supplémentaires (probablement seulement quelques dizaines). Je pense que Discourse Category Home 🏠 en est une qui ajoute une route.
J’ai l’impression d’avoir réussi à écrire un plugin mais je dois le mettre sur GitHub afin de l’inclure dans mon app.yml. Ce qui expose naturellement le token également. Y a-t-il un moyen de contourner cela ?
Lisez simplement le jeton à partir d’un paramètre de site et insérez-le là après l’installation.
Ça a beaucoup de sens. Merci !
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.