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::Instancein 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
urlsalle 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