Procurando exemplos de uso de add_api_key_scope

Olá a todos,

Estou tentando trabalhar com este método em Plugin::Instance: discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub

Tentei pesquisar usos existentes deste método na base de código do Discourse / no Github, mas parece que ele não é realmente utilizado em nenhum lugar fora dos casos de teste (pelo menos no que diz respeito ao código publicamente acessível).

Alguém poderia me explicar os seguintes pontos:

  • Qual é a maneira correta de obter uma instância de Plugin::Instance em um plugin para que o método possa ser invocado?
  • Qual é o momento adequado para chamar o método vinculado acima? Se eu criar um novo endpoint no meu plugin, devo colocar essa chamada após a criação do endpoint? Deve ser antes ou dentro do after_initialize?
  • O código a seguir parece registrar o escopo, mas ao tentar acessar o endpoint que registrei com uma chave de API de administrador que possui esse escopo, ele não parece conseguir encontrar a ação. O endpoint funciona bem quando acessado com uma chave de API de administrador que tem todos os escopos. Por que isso não está funcionando? O que estou fazendo de errado?
  • Tentei adicionar uma entrada urls às ações, mas parece que não está sendo reconhecida. Como adicionar com sucesso uma lista de URLs às quais o escopo se aplica a essa estrutura?
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: não tenho certeza se isso está correto

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

end
1 curtida