Разрешить витрине чтение каталога, сохранив запрет изменения

Фактические данные получены через расширение interbase по TCP к отдельному серверу Firebird с проверкой пароля. Собственные учебные пользователи, базы и промежуточные резервные файлы удалены после наблюдений.

Наблюдаемый результат программы
НаблюдениеРезультат
Обычный пользователь вошёлда
SELECT до GRANT разрешённет
Код первого отказа-551
После GRANT: товар 1Cable — 3
После GRANT: товар 2Clamp — 0
UPDATE при одном SELECT разрешённет
Код отказа UPDATE-551
После отказа Cable сохранил количество3
Строки и дополнительные наблюдения
{
    "ordinary_user_identity_matches": true,
    "initial_select": {
        "value": false,
        "warning": true,
        "code": -551,
        "message_present": true
    },
    "catalogue": [
        {
            "ID": 1,
            "TITLE": "Cable",
            "QTY": 3
        },
        {
            "ID": 2,
            "TITLE": "Clamp",
            "QTY": 0
        }
    ],
    "update_refusal": {
        "value": false,
        "warning": true,
        "code": -551,
        "message_present": true
    },
    "after": [
        {
            "ID": 1,
            "TITLE": "Cable",
            "QTY": 3
        },
        {
            "ID": 2,
            "TITLE": "Clamp",
            "QTY": 0
        }
    ],
    "permission_path": "direct SELECT only; no role or PUBLIC grant"
}

Самостоятельный запуск создаёт result.json с данными и metrics.json с проверками рядом с example.php.