You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Права msorder_* закрывают покупателей с персональными данными: нужны отдельные mscustomer_* #895
Права msorder_* закрывают не только заказы. Под ними же лежат покупатели с персональными данными, их адреса, группы покупателей и отгрузки. Отдельных прав для покупателей (mscustomer_*) в компоненте нет.
Что реально закрыто каждым правом (config/routes/manager.php):
1. Имя права не отражает его охват. Администратор, выдающий msorder_list человеку «чтобы смотрел заказы», не ожидает, что тот получит выгрузку клиентской базы с контактами. При разборе прав по названиям это неочевидно: в карте прав и в лексиконе написано про заказы.
2. Расходится с тем, как компонент сам защищает эти данные. В manager.php:1060 стоит комментарий и отдельная защита как раз из-за PII покупателей:
// Model fields data reads: visible embeds comboOptions; combo-options executes sources
// (e.g. msCustomer PII). Require a form/settings permission — not mgr-auth alone (#613).
То есть один путь к тем же данным уже ужесточали осознанно (#613), а основной список покупателей остаётся под правом с «заказным» именем.
3. Гранулярность. Сейчас нельзя дать доступ к заказам, не дав базу покупателей, — это одно и то же право. Для магазина, где заказами занимается подрядчик или оператор, разделение было бы естественным.
Предложение
Завести отдельные права для покупателей и перевести на них соответствующие роуты:
mscustomer_list — список покупателей, адреса, группы;
Отгрузки (OrderShipmentController) под msorder_* выглядят уместно — это часть заказа.
Совместимость
Правка ломающая: у тех, кому выдан только msorder_*, пропадёт доступ к покупателям. Смягчить можно резолвером — выдать новые права везде, где уже есть msorder_list / msorder_save / msorder_remove, чтобы текущее поведение сохранилось, а дальше администратор сможет разделить их сам.
Удобный момент для такой правки — вместе с #893, где и так появляется резолвер раздачи прав по политикам.
Activity
fix(security): allowlist полей вместо снятия секретов, закрыть GetLis…
fix(security): allowlist полей в процессорах покупателя и пользователя (