Skip to content

fix(mgr): ACL на запись /grid-config (mssetting_save)#436

Open
Ibochkarev wants to merge 2 commits into
betafrom
fix/issue-417-grid-config-write-acl
Open

fix(mgr): ACL на запись /grid-config (mssetting_save)#436
Ibochkarev wants to merge 2 commits into
betafrom
fix/issue-417-grid-config-write-acl

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Write-эндпойнты /api/mgr/grid-config больше не открыты под одним view_document. Глобальные колонки msGridField меняют только пользователи с mssetting_save. Чтение конфигурации грида остаётся на view_document.

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #417

Смежно с #378 / #381 (другие ACL-поверхности mgr API).

Как это было протестировано?

cd core/components/minishop3
php tests/GridConfigRouteAclTest.php   # exit 0
composer ci:php                         # exit 0

Gate E (эта сессия):

  • php -l config/routes/manager.php — OK

  • php tests/GridConfigRouteAclTest.php — OK (полная карта method→permission)

  • composer ci:php — OK (exit 0)

  • Vue — n/a (UI без своей ACL; API отдаст 403)

  • Ручное тестирование

  • Автоматические тесты (composer ci:php)

  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: ветка fix/issue-417-grid-config-write-acl
  • MODX: n/a
  • PHP: 8.2+

Скриншоты (если применимо)

n/a

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы — не требуются
  • PHPStan — не в этом гейте
  • ESLint — n/a
  • CHANGELOG.md — на релизе

Дополнительные заметки

Карта ACL:

Method Path Permission
GET /{grid_key} view_document
PUT /{grid_key} mssetting_save
POST /{grid_key}/field mssetting_save
PUT /{grid_key}/field/{field_name} mssetting_save
DELETE /{grid_key}/{field_name} mssetting_save

UX: вкладка «Конфигурация гридов» без mssetting_save получит 403 на save — ожидаемо.

Review: code-reviewer, thermo-nuclear, security-review; 1 fix-loop (усилен smoke-тест partition).

@Ibochkarev Ibochkarev added priority: high Важно исправить в ближайшее время bug Something isn't working labels Jul 23, 2026
@Ibochkarev
Ibochkarev force-pushed the fix/issue-417-grid-config-write-acl branch from b1adfbd to fb8acca Compare July 23, 2026 15:59
@Ibochkarev
Ibochkarev requested a review from biz87 July 23, 2026 16:47
Global msGridField updates were reachable with only view_document, so any
manager who can open documents could reshape grids for everyone. Keep GET
on view_document; guard PUT/POST/DELETE with mssetting_save.
PHPCS requires a space after function and multi-line if parentheses
on their own lines; also wrap long error responses and the ACL regex.
@Ibochkarev
Ibochkarev force-pushed the fix/issue-417-grid-config-write-acl branch from c2e5bd0 to 6d1e667 Compare July 24, 2026 02:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working priority: high Важно исправить в ближайшее время

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Manager API: /grid-config write под view_document (глобальный UI для всех)

1 participant