Bonjour à tous,
Je tente de travailler avec cette méthode sur Plugin::Instance : discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub
J’ai essayé de rechercher les utilisations existantes de cette méthode dans la base de code de Discourse / sur GitHub, mais il semble que cette méthode ne soit réellement utilisée nulle part en dehors des cas de test (du moins pour le code accessible publiquement).
Pourriez-vous m’expliquer les points suivants :
- Quelle est la bonne méthode pour obtenir une instance de
Plugin::Instancedans un plugin afin que la méthode puisse être invoquée ? - Quel est le bon moment pour appeler la méthode liée ci-dessus ? Si je crée un nouveau point de terminaison (endpoint) dans mon plugin, dois-je placer cet appel après la création du point de terminaison ? Devrait-il être placé avant ou à l’intérieur de
after_initialize? - Le code suivant semble enregistrer la portée (scope), mais lorsque j’essaie d’accéder au point de terminaison que j’ai enregistré avec une clé API d’administrateur possédant cette portée, il ne semble pas pouvoir trouver l’action. Le point de terminaison fonctionne parfaitement lorsque j’y accède avec une clé API d’administrateur disposant de toutes les portées. Pourquoi cela ne fonctionne-t-il pas ? Qu’est-ce que je fais de mal ?
- J’ai essayé d’ajouter une entrée
urlsaux actions, mais cela ne semble pas être pris en compte. Comment ajouter correctement une liste d’URLs auxquelles la portée s’applique à cette structure ?
after_initialize do
module ::ApiKeyScopeTest
class Engine < ::Rails::Engine
engine_name "api_key_scope_test"
isolate_namespace ApiKeyScopeTest
end
end
class ApiKeyScopeTest::ApiKeyScopeTestController < ::ApplicationController
def action
...
end
end
ApiKeyScopeTest::Engine.routes.draw do
post "/admin/plugins/api-key-scope-test" => "api_key_scope_test#action", constraints: AdminConstraint.new
end
Discourse::Application.routes.append do
mount ::ApiKeyScopeTest::Engine, at: "/"
end
plugin = Plugin::Instance.new # Note : pas certain que ce soit correct
plugin.add_api_key_scope(
:test_scope,
{
post: {
actions: %w[api_key_scope_test#action]
}
}
)
end