Recherche d'exemples d'utilisation de add_api_key_scope

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::Instance dans 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 urls aux 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
1 « J'aime »