1111use Magento \Framework \Webapi \Rest \Request as RestRequest ;
1212use Magento \Customer \Api \Data \CustomerInterface ;
1313use Magento \Customer \Api \CustomerRepositoryInterface ;
14+ use Magento \Authorization \Model \UserContextInterface ;
15+ use Magento \Framework \App \ObjectManager ;
1416
1517/**
1618 * Update customer by id from request param
@@ -22,12 +24,19 @@ class UpdateCustomer
2224 */
2325 private $ request ;
2426
27+ /**
28+ * @var UserContextInterface
29+ */
30+ private $ userContext ;
31+
2532 /**
2633 * @param RestRequest $request
34+ * @param UserContextInterface|null $userContext
2735 */
28- public function __construct (RestRequest $ request )
36+ public function __construct (RestRequest $ request, ? UserContextInterface $ userContext = null )
2937 {
3038 $ this ->request = $ request ;
39+ $ this ->userContext = $ userContext ?? ObjectManager::getInstance ()->get (UserContextInterface::class);
3140 }
3241
3342 /**
@@ -43,10 +52,14 @@ public function beforeSave(
4352 CustomerInterface $ customer ,
4453 ?string $ passwordHash = null
4554 ): array {
46- $ customerId = $ this ->request ->getParam ('customerId ' );
55+ $ customerSessionId = $ this ->userContext ->getUserType () === $ this ->userContext ::USER_TYPE_CUSTOMER ?
56+ (int )$ this ->userContext ->getUserId () : 0 ;
57+ $ customerId = (int )$ this ->request ->getParam ('customerId ' );
4758 $ bodyParams = $ this ->request ->getBodyParams ();
4859 if (!isset ($ bodyParams ['customer ' ]['Id ' ]) && $ customerId ) {
49- $ customer = $ this ->getUpdatedCustomer ($ customerRepository ->getById ($ customerId ), $ customer );
60+ if ($ customerId === $ customerSessionId || $ customerSessionId === 0 ) {
61+ $ customer = $ this ->getUpdatedCustomer ($ customerRepository ->getById ($ customerId ), $ customer );
62+ }
5063 }
5164
5265 return [$ customer , $ passwordHash ];
0 commit comments