Стаття

Новини та Корисні статті

Наші послуги


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