Мы находимся в процессе создания приложения, полностью основанного на 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, так что это не будет вариантом для подключения к системе, так как ключи будут задействованы и станут кошмаром для администратора.
Таким образом, вопрос заключается в том, что, позволяя устанавливать модули в рамках всего приложения, сможете ли вы ограничить доступ к ресурсам приложения, если это так, каков будет наиболее эффективный способ реализации такого контроля и будет ли хорошей идеей разрешить это состоится?
Я провел немало поисков и не смог найти ничего похожего на то, что требуется, кроме фактической установки модулей, их настройки и т. Д.
Спасибо заранее!
Задача ещё не решена.
Других решений пока нет …