Alla ricerca di esempi di utilizzo di add_api_key_scope

Ciao a tutti,

Sto cercando di lavorare con questo metodo su Plugin::Instance: discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub

Ho provato a cercare usi esistenti di questo metodo nell’intero codice di Discourse o su GitHub, ma sembra che non venga effettivamente utilizzato da nessuna parte al di fuori dei casi di test (per quanto riguarda il codice pubblicamente accessibile).

Qualcuno può spiegarmi le seguenti cose:

  • Qual è il modo corretto per ottenere un’istanza di Plugin::Instance in un plugin in modo che il metodo possa essere invocato?
  • Qual è il momento giusto per chiamare il metodo collegato sopra? Se creo un nuovo endpoint nel mio plugin, dovrei inserire questa chiamata dopo la creazione dell’endpoint? Dovrebbe essere prima o all’interno di after_initialize?
  • Il codice seguente sembra registrare lo scope, ma quando provo a chiamare l’endpoint che ho registrato con una chiave API da amministratore che possiede tale scope, sembra non riesca a trovare l’azione. L’endpoint funziona correttamente quando lo chiamo con una chiave API da amministratore che ha tutti gli scope. Perché non funziona, cosa sto facendo male?
  • Ho provato ad aggiungere una voce urls alle azioni, ma sembra non venga rilevata. Come posso aggiungere con successo un elenco di URL a cui si applica lo scope a questa struttura?
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 # Nota: non è chiaro se questo sia corretto

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

end
1 Mi Piace