Description
Preconditions and environment
- Magento 2.4.7-p3
- GraphQL request for newsletter needs to contain a valid authorization token with user type that is not customer.
Steps to reproduce
- Create a valid integration token with user type 1 (integration)
- Do a GraphQL request to subscribe to a newsletter with in the authorization header this token
Expected result
The email should be subscribed to the newsletter since the authorization header doesn't belong to a customer the customer should not be validated.
Actual result
The GraphQL api returns an error that it could not retrieve the customer. This is because the \Magento\NewsletterGraphQl\Model\Resolver\SubscribeEmailToNewsletter
class does retrieve the user id from the context, but does not validate the user type.
It then tries to retrieve the customer by id based on the integration ID. Which will result in a non existing customer error if a customer with the same id as the integration token does not exist..
Additional information
In the image you can see the user_type is 1 and not 3 which you would expect for a customer. But you can also see it still uses the id as if it was a customer id.
Workaround for now would be to not send an authorization header, but sometimes the system will send them by default so Magento should still work correctly even with the header.
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.
- 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.
- Severity: S4 - Affects aesthetics, professional look and feel, “quality” or “usability”.