Skip to content

Commit e3f0d94

Browse files
committed
MC-41363: Customer API improvement
1 parent 7efaa47 commit e3f0d94

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

app/code/Magento/Customer/Model/Plugin/UpdateCustomer.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
use Magento\Framework\Webapi\Rest\Request as RestRequest;
1212
use Magento\Customer\Api\Data\CustomerInterface;
1313
use Magento\Customer\Api\CustomerRepositoryInterface;
14+
use Magento\Customer\Model\Session;
15+
use Magento\Framework\App\ObjectManager;
1416

1517
/**
1618
* Update customer by id from request param
@@ -22,12 +24,22 @@ class UpdateCustomer
2224
*/
2325
private $request;
2426

27+
/**
28+
* @var Session
29+
*/
30+
private $session;
31+
2532
/**
2633
* @param RestRequest $request
34+
* @param Session|null $session
2735
*/
28-
public function __construct(RestRequest $request)
29-
{
36+
public function __construct(
37+
RestRequest $request,
38+
Session $session = null
39+
) {
3040
$this->request = $request;
41+
$this->session = $session ?: ObjectManager::getInstance()
42+
->get(Session::class);
3143
}
3244

3345
/**
@@ -45,7 +57,7 @@ public function beforeSave(
4557
): array {
4658
$customerId = $this->request->getParam('customerId');
4759

48-
if ($customerId) {
60+
if ($customerId && $customerId === $this->session->getData('customer_id')) {
4961
$customer = $this->getUpdatedCustomer($customerRepository->getById($customerId), $customer);
5062
}
5163

dev/tests/api-functional/testsuite/Magento/Customer/Api/AccountManagementMeTest.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,4 +388,27 @@ protected function resetTokenForCustomer($username, $password)
388388
$this->token = $this->tokenService->createCustomerAccessToken($username, $password);
389389
$this->customerRegistry->remove($this->customerRepository->get($username)->getId());
390390
}
391+
392+
/**
393+
* @magentoApiDataFixture Magento/Customer/_files/customer_one_address.php
394+
*/
395+
public function testGetOtherCustomerInfo()
396+
{
397+
$serviceInfo = [
398+
'rest' => [
399+
'resourcePath' => "/V1/customers/me?customerId=1",
400+
'httpMethod' => \Magento\Framework\Webapi\Rest\Request::HTTP_METHOD_PUT,
401+
'token' => $this->token,
402+
]
403+
];
404+
$requestData = ['customer' => ["id" => "-1", "Id" => "1"]];
405+
try {
406+
$this->_webApiCall($serviceInfo, $requestData);
407+
} catch (\Throwable $exception) {
408+
if ($restResponse = json_decode($exception->getMessage(), true)) {
409+
$exceptionMessage = $restResponse['message'];
410+
}
411+
}
412+
$this->assertEquals('The customer email is missing. Enter and try again.', $exceptionMessage);
413+
}
391414
}

0 commit comments

Comments
 (0)