[I128-2686] Удаление профиля падает при проверке дочерних объектов


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2.4 >> [I128-2686] Удаление профиля падает при проверке дочерних объектов📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Исправление ошибок 2026.2.4 🔘 Завершено Средний Ilya Mikhaylenko

Компоненты: ИРБИС 128. Модуль Security - Подсистема безопасности

Завершено: 14.07.2026 11:52

Проблема При удалении профиля может возникнуть ошибка PHP: i128f::ForEachRecord(): Argument #7 ($startres) must be of type array, bool given.

Сценарий воспроизведения

  1. Открыть управление профилями.
  2. Попытаться удалить профиль с проверкой дочерних объектов.
  3. Фактический результат: удаление прерывается TypeError из ForEachRecord().

Ожидаемый результат Проверка дочерних объектов и удаление профиля выполняются без TypeError; если удаление запрещено правами или дочерней структурой, пользователь получает штатный отказ.

Причина Security::DeleteObject() передает TRUE как стартовое состояние в i128f::ForEachRecord(), тогда как текущая сигнатура ожидает array. В режиме reparent также используется SID родителя вместо SID удаляемой записи.

Решение Передавать в ForEachRecord типизированное состояние-массив, возвращать штатные action/res из callbacks и в reparent искать детей удаляемой записи.

Риски Затронуто удаление объектов безопасности и переподчинение потомков. Нужна проверка удаления профиля с детьми и без детей.

-

I1282686: Удаление профиля падает при проверке дочерних объектов. Scope: Security; target release/2026.2; branch `bugfix/I1282686securitydeleteobject-startres`. Draft before branch/commit/push/readback; do not publish until the gates in the source notebook pass.

Куда смотреть:

Изменения по файлам:

modules/Security/api.php