magento / magento2

Prior to making any Submission(s), you must sign an Adobe Contributor License Agreement, available here at: https://opensource.adobe.com/cla.html. All Submissions you make to Adobe Inc. and its affiliates, assigns and subsidiaries (collectively “Adobe”) are subject to the terms of the Adobe Contributor License Agreement.
http://www.magento.com
Open Software License 3.0
11.57k stars 9.32k forks source link

[WebAPI Bug] Customer can change `disable_auto_group_change` attribure at `/V1/customers/me` #39240

Open wubinworks opened 1 month ago

wubinworks commented 1 month ago

Preconditions and environment

Steps to reproduce

  1. Generate <CUSTOMER TOKEN> as described in office document.
  2. Confirm customer data:
    
    curl --request GET 'https://<domain>/rest/V1/customers/me' \
    --header 'Authorization: Bearer <CUSTOMER TOKEN>'

Output body: { "id": 1, "email": "user@example.com", "firstname":"Firstname", "lastname":"Lastname", ... "disable_auto_group_change": 0, "created_in": "Default Store View", "extension_attributes": { "is_subscribed": false } ... }

3. Change customer data:

curl --request PUT 'https:///rest/V1/customers/me' \ --header 'Authorization: Bearer ' \ --header 'Content-Type: application/json' \ --data-raw '{ "customer": { "id": 1, "email": "user@example.com", "firstname":"Firstname", "lastname":"Lastname", "disable_auto_group_change": 1, "created_in": "Changed", "confirmation": "Hello", "extension_attributes": { "is_subscribed": true } } }'

4. Confirm customer data again:

curl --request GET 'https:///rest/V1/customers/me' \ --header 'Authorization: Bearer '

Output body: { "id": 1, "email": "user@example.com", "firstname":"Firstname", "lastname":"Lastname", ... "disable_auto_group_change": 1, "created_in": "Changed", "confirmation": "Hello", "extension_attributes": { "is_subscribed": true } ... }



### Expected result

At least `disable_auto_group_change` and `confirmation` should not be changed.
Maybe Magento WebAPI needs to throw exception.

### Actual result

Both `disable_auto_group_change`, `created_in`, `confirmation` and `extension_attributes.is_subscribed` is editable in Customer User Context.

`disable_auto_group_change` checkbox change can be confirmed on Admin Panel.

### Additional information

<ins>**`disable_auto_group_change`: it should only be changeable by Admin or Integration.**</ins>
`created_in`: this attribute is set during registration but not used elsewhere.
`confirmation`: it should only be changeable by Admin or Integration.
`extension_attributes.is_subscribed`: this one should only be changeable by unsubscribe link?

Additional:
`disable_auto_group_change` and `confirmation` should not be `visible` in Customer User Context WebAPI output.

### Release note

_No response_

### Triage and priority

- [ ] Severity: **S0** _- Affects critical data or functionality and leaves users without workaround._
- [ ] Severity: **S1** _- Affects critical data or functionality and forces users to employ a workaround._
- [X] Severity: **S2** _- Affects non-critical data or functionality and forces users to employ a workaround._
- [ ] Severity: **S3** _- Affects non-critical data or functionality and does not force users to employ a workaround._
- [X] Severity: **S4** _- Affects aesthetics, professional look and feel, “quality” or “usability”._
m2-assistant[bot] commented 1 month ago

Hi @wubinworks. Thank you for your report. To speed up processing of this issue, make sure that the issue is reproducible on the vanilla Magento instance following Steps to reproduce.

m2-assistant[bot] commented 1 month ago

Hi @engcom-Bravo. Thank you for working on this issue. In order to make sure that issue has enough information and ready for development, please read and check the following instruction: :point_down:

engcom-Bravo commented 1 month ago

Hi @wubinworks,

Thanks for your reporting and collaboration.

We have verified the issue in Latest 2.4-develop instance and seems to be an improvement to proceed further we are considering this as Feature Request.

Thanks.

wubinworks commented 1 month ago

@engcom-Bravo

I need to clarify, this is not a "Feature Request", it is a Bug, or say Fault.

At least for disable_auto_group_change attribute. Please read the official document.

If enabled, you can override VAT ID Validation for individual customers by selecting the checkbox on the Customer Information page.

That's what the checkbox controls. In no way should the customer be able to change this attribute by itself, even via WebAPI. If the customer can change, it may result in incorrect tax payment.

PS: a similar issue, 2.4.6 -> 2.4.7, Magento fixed the ability to change created_at attribute. See v2.4.7 CustomerRepository.php#Line218. You can compare with v2.4.6