Skip to content

Commit 673bd22

Browse files
Merge branch '2.4-develop' into dhl-mbstring-labels
2 parents 8749553 + e6e5c73 commit 673bd22

File tree

7 files changed

+323
-75
lines changed

7 files changed

+323
-75
lines changed

app/code/Magento/CatalogGraphQl/Model/Resolver/Product/PriceRange.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,13 @@ public function resolve(
6363
$product = $value['model'];
6464
$product->unsetData('minimal_price');
6565

66+
if ($context) {
67+
$customerGroupId = $context->getExtensionAttributes()->getCustomerGroupId();
68+
if ($customerGroupId !== null) {
69+
$product->setCustomerGroupId($customerGroupId);
70+
}
71+
}
72+
6673
$requestedFields = $info->getFieldSelection(10);
6774
$returnArray = [];
6875

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Customer\Model\Group;
9+
10+
use Magento\Customer\Model\ResourceModel\Group\Resolver as ResolverResource;
11+
12+
/**
13+
* Lightweight service for getting current customer group based on customer id
14+
*/
15+
class Resolver
16+
{
17+
/**
18+
* @var ResolverResource
19+
*/
20+
private $resolverResource;
21+
22+
/**
23+
* @param ResolverResource $resolverResource
24+
*/
25+
public function __construct(ResolverResource $resolverResource)
26+
{
27+
$this->resolverResource = $resolverResource;
28+
}
29+
30+
/**
31+
* Return customer group id
32+
*
33+
* @param int $customerId
34+
* @return int|null
35+
*/
36+
public function resolve(int $customerId) : ?int
37+
{
38+
return $this->resolverResource->resolve($customerId);
39+
}
40+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\Customer\Model\ResourceModel\Group;
9+
10+
use Magento\Framework\App\ResourceConnection;
11+
12+
/**
13+
* Resource model for customer group resolver service
14+
*/
15+
class Resolver
16+
{
17+
/**
18+
* @var ResourceConnection
19+
*/
20+
private $resourceConnection;
21+
22+
/**
23+
* @param ResourceConnection $resourceConnection
24+
*/
25+
public function __construct(
26+
ResourceConnection $resourceConnection
27+
) {
28+
$this->resourceConnection = $resourceConnection;
29+
}
30+
31+
/**
32+
* Resolve customer group from db
33+
*
34+
* @param int $customerId
35+
* @return int|null
36+
*/
37+
public function resolve(int $customerId) : ?int
38+
{
39+
$result = null;
40+
41+
$connection = $this->resourceConnection->getConnection();
42+
$tableName = $this->resourceConnection->getTableName('customer_entity');
43+
44+
$query = $connection
45+
->select()
46+
->from(
47+
['main_table' => $tableName],
48+
['main_table.group_id']
49+
)
50+
->where('main_table.entity_id = ?', $customerId);
51+
$groupId = $connection->fetchOne($query);
52+
if ($groupId) {
53+
$result = (int) $groupId;
54+
}
55+
56+
return $result;
57+
}
58+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\CustomerGraphQl\Model\Context;
9+
10+
use Magento\Authorization\Model\UserContextInterface;
11+
use Magento\GraphQl\Model\Query\ContextParametersInterface;
12+
use Magento\GraphQl\Model\Query\ContextParametersProcessorInterface;
13+
use Magento\Customer\Model\Group;
14+
use Magento\Customer\Model\Group\Resolver as CustomerGroupResolver;
15+
16+
/**
17+
* @inheritdoc
18+
*/
19+
class AddCustomerGroupToContext implements ContextParametersProcessorInterface
20+
{
21+
/**
22+
* @var CustomerGroupResolver
23+
*/
24+
private $customerGroupResolver;
25+
26+
/**
27+
* @param CustomerGroupResolver $customerGroupResolver
28+
*/
29+
public function __construct(
30+
CustomerGroupResolver $customerGroupResolver
31+
) {
32+
$this->customerGroupResolver = $customerGroupResolver;
33+
}
34+
35+
/**
36+
* @inheritdoc
37+
*/
38+
public function execute(ContextParametersInterface $contextParameters): ContextParametersInterface
39+
{
40+
$customerGroupId = null;
41+
$extensionAttributes = $contextParameters->getExtensionAttributesData();
42+
if ($contextParameters->getUserType() === UserContextInterface::USER_TYPE_GUEST) {
43+
$customerGroupId = Group::NOT_LOGGED_IN_ID;
44+
} elseif (!empty($extensionAttributes) && $extensionAttributes['is_customer'] === true) {
45+
$customerGroupId = $this->customerGroupResolver->resolve((int) $contextParameters->getUserId());
46+
}
47+
if ($customerGroupId !== null) {
48+
$contextParameters->addExtensionAttribute('customer_group_id', (int) $customerGroupId);
49+
}
50+
return $contextParameters;
51+
}
52+
}

app/code/Magento/CustomerGraphQl/etc/graphql/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
<arguments>
1818
<argument name="contextParametersProcessors" xsi:type="array">
1919
<item name="add_user_info_to_context" xsi:type="object">Magento\CustomerGraphQl\Model\Context\AddUserInfoToContext</item>
20+
<item name="add_customer_group_to_context" xsi:type="object">Magento\CustomerGraphQl\Model\Context\AddCustomerGroupToContext</item>
2021
</argument>
2122
</arguments>
2223
</type>

0 commit comments

Comments
 (0)