Статья

Новости и Полезные статьи

Категории новостей


Наши услуги


Persistence Инициатива: отчет о встрече

Logo

На выходных в марте 2019 года Артус Колановски, Мануэль Селбах, Бенни Мак и Оливер Хадер встретились в офисах dkd во Франкфурте-на-Майне для разработки постоянного кода и концептуального спринта.

Интеграция с GraphQL

Основная цель встречи была интеграция GraphQL API в ядро TYPO3. Предварительно должен быть установлен внутренний API, используемый разработчиками, чтобы можно было получать структурированные данные. Из-за возможных дополнительных измерений, таких как языки и рабочие пространства, этот API должен разрешать надлежащие отношения в соответствии с заданным контекстом.

Чтобы представить этот API в качестве общедоступного веб-интерфейса (например, для использования в современных клиентских инфраструктурах, таких как Angular, VueJS или React), необходимо рассмотреть дополнительные аспекты. Наиболее важным является уровень разрешений для контроля доступа к данным, предоставляемым для общего доступа. Современные идеи основаны на пакете Symfony «security-acl», который предоставляет или запрещает доступ к различным обьектам, таким как таблица, поле, папки, файлы и т.д.

Конфигурация уточняющей таблицы

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

Поддержка типов данных JSON

Механизмы хранения отношений в TYPO3 поддерживают три различных типа: значения с разделителями-запятыми (CSV), хранящиеся в источнике, внешние ключи, хранящиеся в указанном субъекте, и отношения «многие ко многим», хранящиеся в определенной промежуточной таблице (MM).

В худшем случае хранилище CSV содержит только идентификаторы без сохранения их концепции - таким образом, соответствующее соотношение может быть определено только путем оценки текущих настроек $TCA и не является устойчивым к корректировкам. Типы данных JSON стали доступны в MySQL 5.7 и позволят хранить конкретную информацию, а также использоваться в соединениях базы данных. Doctrine DBAL уже поддерживает эти типы данных - однако в QueryBuilder не существует кросс-базисной реализации операторов типа JSON_CONTAINS.

Улучшение уровня доступа

Возможность определения разрешений на уровне таблицы или поля таблицы в настоящее время доступна только для внутренних пользователей и групп внутренних пользователей. Чтобы расширить область применения и предоставить полуоткрытую конечную точку для GraphQL, необходимо обеспечить возможность извлечения только определенной информации. Таким образом, концепции разрешений должны быть отделены от внутренних пользователей и любой пользовательской записи в целом. Пакет Composer «symfony / security-acl» предоставляет гибкую концепцию, основанную на списках контроля доступа (ACL), для динамического управления этими требованиями, касающимися обработки разрешений.

Уменьшение локализации и сложности рабочего пространства

Разрешение нескольких измерений содержимого, таких как языки и рабочие пространства, требует подробных знаний о реализации, особенно когда речь идет о разрешении отношений. Ранее уже упоминалось, что они могут быть сохранены в виде значений, разделенных запятыми, внешних ключей и использования промежуточной таблицы. Правильную информацию можно получить только следуя принципам извлечения «значений по умолчанию» и их наложения для каждого в соответствии с контекстом (языком и / или рабочей областью). Чтобы удалить сложность запроса и, возможно, разрешить прямые запросы - например, использование JOIN - семантическое значение заполнителей рабочей области должно быть переопределенно заново.

Будь частью этого.

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

ЛогоНазваниеТипДемоСсылки
image