Описание проблемы
POST /api/v1/customer/add пишет любое поле из fieldMeta модели, кроме blacklist PROFILE_QUICK_UPDATE_FORBIDDEN. В blacklist нет privacy_accepted_at — клиент может проставить timestamp GDPR-согласия без UI-согласия.
Шаги воспроизведения
- Авторизованный покупатель.
POST /api/v1/customer/add с телом {"key":"privacy_accepted_at","value":"2026-01-01 00:00:00"}.
- Поле сохраняется на
msCustomer.
Ожидаемое поведение
Consent-поля (privacy_accepted_at, и аналоги) либо в forbidden, либо только через явный register/consent endpoint.
Фактическое поведение
// CustomerProfileController.php PROFILE_QUICK_UPDATE_FORBIDDEN
// есть privacy_ip, нет privacy_accepted_at
// updateField пишет любой ключ из fieldMeta
Окружение
- MiniShop3: beta / REST API
- MODX: 3.x
- PHP: 8.2+
Дополнительный контекст
Лучше allowlist редактируемых полей, а не «весь fieldMeta минус blacklist».
Описание проблемы
POST /api/v1/customer/addпишет любое поле изfieldMetaмодели, кроме blacklistPROFILE_QUICK_UPDATE_FORBIDDEN. В blacklist нетprivacy_accepted_at— клиент может проставить timestamp GDPR-согласия без UI-согласия.Шаги воспроизведения
POST /api/v1/customer/addс телом{"key":"privacy_accepted_at","value":"2026-01-01 00:00:00"}.msCustomer.Ожидаемое поведение
Consent-поля (
privacy_accepted_at, и аналоги) либо в forbidden, либо только через явный register/consent endpoint.Фактическое поведение
Окружение
Дополнительный контекст
Лучше allowlist редактируемых полей, а не «весь fieldMeta минус blacklist».