Ищу примеры использования add_api_key_scope

Всем привет,

Я пытаюсь разобраться с этим методом в Plugin::Instance: discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub

Я попытался найти существующие использования этого метода в кодовой базе Discourse и на GitHub, но, похоже, он нигде не используется за пределами тестовых случаев (по крайней мере, в общедоступном коде).

Может кто-нибудь объяснить мне следующие моменты:

  • Как правильно получить экземпляр Plugin::Instance в плагине, чтобы можно было вызвать этот метод?
  • В какое правильное время следует вызывать метод, на который приведена ссылка выше? Если я создаю новый эндпоинт в своем плагине, должен ли я размещать этот вызов после создания эндпоинта? Должен ли он быть до или внутри after_initialize?
  • Следующий код, похоже, регистрирует область доступа (scope), но при попытке обратиться к зарегистрированному мной эндпоинту с использованием ключа API администратора, имеющего эту область доступа, действие не находится. Эндпоинт работает нормально, если обращаться к нему с ключом API администратора, имеющим все области доступа. Почему это не работает, что я делаю неправильно?
  • Я попытался добавить запись urls в раздел действий, но, похоже, она не учитывается. Как правильно добавить список URL-адресов, к которым применяется область доступа, к этой структуре?
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 # Примечание: неясно, верно ли это

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

end
1 лайк