Buscando ejemplos de uso de add_api_key_scope

Hola a todos,

Estoy intentando trabajar con este método en Plugin::Instance: discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub

He intentado buscar usos existentes de este método en la base de código de Discourse / GitHub, pero parece que en realidad no se utiliza en ningún lugar fuera de los casos de prueba (en lo que respecta al código de acceso público).

¿Alguien puede explicarme lo siguiente:

  • ¿Cuál es la forma correcta de obtener una instancia de Plugin::Instance en un plugin para que el método pueda ser invocado?
  • ¿Cuál es el momento adecuado para llamar al método enlazado anteriormente? Si creo un nuevo endpoint en mi plugin, ¿debería colocar esta llamada después de que se cree el endpoint? ¿Debería ser antes o dentro de after_initialize?
  • El siguiente código parece registrar el alcance, pero al intentar acceder al endpoint que registro con una clave de API de administrador que tiene ese alcance, parece que no puede encontrar la acción. El endpoint funciona bien cuando se accede a él con una clave de API de administrador con todos los alcances. ¿Por qué esto no funciona, qué estoy haciendo mal aquí?
  • Intenté agregar una entrada urls a las acciones, pero parece que no se detecta. ¿Cómo puedo agregar correctamente una lista de URLs a las que se aplica el alcance a esta estructura?
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: no está claro si esto es correcto

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

end
1 me gusta