Skip to content

[Feature] Web API: публичный Customer DTO + allowlist полей для /customer/add #424

Description

@Ibochkarev

Описание функции

  1. Единый serializer/DTO покупателя для Web API без секретов (password, token, lock counters, privacy_ip, …).
  2. Allowlist редактируемых полей для POST /customer/add и PUT /customer/profile вместо «весь fieldMeta минус blacklist».

Проблема, которую решает

Сейчас #410 (утечка toArray) и #413 (privacy_accepted_at) — симптомы отсутствия контракта «что клиент видит/может менять». Extra fields через Object Extension должны попадать в allowlist явно.

Предлагаемое решение

  • CustomerPublicDto::fromModel(msCustomer): array
  • Константа/конфиг PROFILE_EDITABLE_FIELDS (+ dynamic extra fields из map с флагом editable)
  • Использовать DTO во всех Web customer-ответах (login/register/profile/add)

Альтернативные варианты

Точечно чистить ключи в каждом контроллере — легко забыть (как сейчас).

Примеры использования

return $this->success($msg, ['customer' => CustomerPublicDto::from($customer)]);

Дополнительный контекст

Закрывает класс утечек рядом с #410/#413; дополняет #341 (envelope) на уровне payload.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority: mediumСредний приоритет

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions