Внедрение и ограничение сторонних модулей ZF2 Framework

Мы находимся в процессе создания приложения, полностью основанного на ZF2. Приложение разделено на 3 основных подразделения, а именно: ядро, API и интерфейсная часть / отдел.

В какой-то момент мы хотим открыть систему, чтобы люди могли разрабатывать сторонние модули, которые будут предлагаться для включения в различные профили клиентов. Эти сторонние модули либо расширят функциональные возможности, либо смогут улучшить существующие процессы, подключаясь к событиям, запускаемым с базового уровня.

Эти сторонние модули могут использовать API, однако текущий API ориентирован на внешний мир и не позволяет расширять и расширять систему с этой точки зрения.

Таким образом, альтернативой может быть прямой доступ к ядру, что, по нашему мнению, нежелательно, поскольку у нас должны быть средства для контроля доступа к этим жизненно важным компонентам и базовым данным.

Я рассматриваю возможность создания отдельного API, предназначенного для управления доступом на уровне модулей в жизненном цикле приложения, однако я не совсем уверен, как это будет выглядеть.

Структура папок будет выглядеть примерно так:

-конфиг

-данные

-AppCore

—ядро

—CoreForms

—CoreContacts

-AppAPI

—APIForms

—APIContacts

-APPFront (этот fodler будет в отдельном экземпляре установки ZF2 и будет общаться через APPApi)

—FrontForms

—FrontContacts

-3rdPartyModules

-общественности

-продавец

Разработанные модули будут находиться в папке 3rdPartyModules во всей структуре.

Вопрос в том, как можно ограничить доступ к основным ресурсам, например, любые сторонние модули не должны использовать стандартный адаптер базы данных. В этом случае db_adapter (Zend \ Db \ Adapter \ Adapter).

Эти модули будут иметь отдельную настройку базы данных, где данные должны храниться специально для этих модулей, поэтому вместо них будет доступно что-то вроде db_adapter_3rdparty.

Я рассмотрел возможность использования интерфейсов, которые должны быть реализованы в этих сторонних модулях, а затем проверку, выполняемую любым из классов и функций базового модуля, однако это было бы громоздко и неэффективно.

В настоящее время функциональность API доступна только через REST, так что это не будет вариантом для подключения к системе, так как ключи будут задействованы и станут кошмаром для администратора.

Таким образом, вопрос заключается в том, что, позволяя устанавливать модули в рамках всего приложения, сможете ли вы ограничить доступ к ресурсам приложения, если это так, каков будет наиболее эффективный способ реализации такого контроля и будет ли хорошей идеей разрешить это состоится?

Я провел немало поисков и не смог найти ничего похожего на то, что требуется, кроме фактической установки модулей, их настройки и т. Д.

Спасибо заранее!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]