Suche nach Anwendungsbeispielen für add_api_key_scope

Hallo zusammen,

ich versuche, mit dieser Methode in Plugin::Instance zu arbeiten: discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub

Ich habe versucht, nach bestehenden Verwendungen dieser Methode in der Discourse-Codebase bzw. auf GitHub zu suchen, aber es scheint, als würde sie außerhalb von Testfällen (soweit öffentlich zugänglicher Code dies zulässt) nirgendwo verwendet werden.

Könnte mir jemand Folgendes erklären:

  • Wie bekomme ich korrekt eine Instanz von Plugin::Instance in einem Plugin, damit die Methode aufgerufen werden kann?
  • Wann ist der richtige Zeitpunkt, um die oben verlinkte Methode aufzurufen? Wenn ich einen neuen Endpunkt in meinem Plugin erstelle, sollte ich diesen Aufruf nach der Erstellung des Endpunkts platzieren? Sollte er vor oder innerhalb von after_initialize stehen?
  • Der folgende Code scheint den Scope zu registrieren, aber wenn ich versuche, den von mir registrierten Endpunkt mit einem Admin-API-Schlüssel aufzurufen, der diesen Scope besitzt, findet er die Aktion nicht. Der Endpunkt funktioniert einwandfrei, wenn ich ihn mit einem Admin-API-Schlüssel mit allen Scopes aufrufe. Warum funktioniert das nicht, was mache ich falsch?
  • Ich habe versucht, einen urls-Eintrag zu den Aktionen hinzuzufügen, aber er wird scheinbar nicht erkannt. Wie füge ich dieser Struktur erfolgreich eine Liste von URLs hinzu, auf die der Scope angewendet werden soll?
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 # Hinweis: Nicht klar, ob dies korrekt ist

    plugin.add_api_key_scope(
        :test_scope,
        {
            post: {
                actions: %w[api_key_scope_test#action]
            }
        }
    )

end
1 „Gefällt mir“