diff --git a/vendor/magento/module-company/Model/SaveValidator/SanitizeRegion.php b/vendor/magento/module-company/Model/SaveValidator/SanitizeRegion.php new file mode 100644 index 000000000000..4592ab614d06 --- /dev/null +++ b/vendor/magento/module-company/Model/SaveValidator/SanitizeRegion.php @@ -0,0 +1,53 @@ +company->getRegion(); + if (empty($region)) { + return; + } + + $sanitized = trim($this->stripTags->filter($region)); + $this->company->setRegion($sanitized); + } +} diff --git a/vendor/magento/module-company/etc/di.xml b/vendor/magento/module-company/etc/di.xml index cf9fe0d45f54..e14ea26d4fce 100755 --- a/vendor/magento/module-company/etc/di.xml +++ b/vendor/magento/module-company/etc/di.xml @@ -33,6 +33,7 @@ \Magento\Company\Model\SaveValidator\CompanyId \Magento\Company\Model\SaveValidator\RequiredFields \Magento\Company\Model\SaveValidator\SanitizeCompanyName + \Magento\Company\Model\SaveValidator\SanitizeRegion \Magento\Company\Model\SaveValidator\SalesRepresentative \Magento\Company\Model\SaveValidator\CustomerGroup \Magento\Company\Model\SaveValidator\CompanyStatus diff --git a/vendor/magento/module-purchase-order-rule/Plugin/Customer/Authorization/ApproveRejectPurchaseOrderPlugin.php b/vendor/magento/module-purchase-order-rule/Plugin/Customer/Authorization/ApproveRejectPurchaseOrderPlugin.php index 74236b6814a1..279efc076f11 100644 --- a/vendor/magento/module-purchase-order-rule/Plugin/Customer/Authorization/ApproveRejectPurchaseOrderPlugin.php +++ b/vendor/magento/module-purchase-order-rule/Plugin/Customer/Authorization/ApproveRejectPurchaseOrderPlugin.php @@ -12,2 +12,3 @@ use Magento\Company\Model\CompanyContext; +use Magento\Company\Api\CompanyManagementInterface; use Magento\Company\Model\UserRole; @@ -20,9 +21,11 @@ use Magento\PurchaseOrderRule\Api\AppliedRuleRepositoryInterface; use Magento\PurchaseOrderRule\Api\Data\AppliedRuleApproverInterface; use Magento\PurchaseOrderRule\Api\Data\AppliedRuleInterface; +use Magento\Framework\App\ObjectManager; /** * Plugin to restrict action to remaining rule approvers and company admin + * */ class ApproveRejectPurchaseOrderPlugin { @@ -61,6 +64,11 @@ class ApproveRejectPurchaseOrderPlugin */ private $appliedRuleApproverRepository; + /** + * @var CompanyManagementInterface + */ + private $companyManagement; + /** * @param CompanyAdminPermission $companyAdminPermission * @param CompanyContext $companyContext @@ -69,6 +77,7 @@ class ApproveRejectPurchaseOrderPlugin * @param AppliedRuleApproverRepositoryInterface $appliedRuleApproverRepository * @param UserRoleManagement $userRoleManagement * @param SearchCriteriaBuilder $searchCriteriaBuilder + * @param CompanyManagementInterface|null $companyManagement */ public function __construct( CompanyAdminPermission $companyAdminPermission, @@ -77,7 +86,8 @@ public function __construct( AppliedRuleRepositoryInterface $appliedRuleRepository, AppliedRuleApproverRepositoryInterface $appliedRuleApproverRepository, UserRoleManagement $userRoleManagement, - SearchCriteriaBuilder $searchCriteriaBuilder + SearchCriteriaBuilder $searchCriteriaBuilder, + ?CompanyManagementInterface $companyManagement = null ) { $this->companyAdminPermission = $companyAdminPermission; $this->companyContext = $companyContext; @@ -86,6 +96,8 @@ public function __construct( $this->appliedRuleApproverRepository = $appliedRuleApproverRepository; $this->userRoleManagement = $userRoleManagement; $this->searchCriteriaBuilder = $searchCriteriaBuilder; + $this->companyManagement = $companyManagement ?: + ObjectManager::getInstance()->get(CompanyManagementInterface::class); } /** @@ -102,6 +114,8 @@ public function __construct( { if ($this->companyAdminPermission->isGivenUserCompanyAdmin($this->companyContext->getCustomerId()) && $this->companyStructure->getAllowedChildrenIds((int)$this->companyContext->getCustomerId()) + && (int) $purchaseOrder->getCompanyId() === + (int) $this->companyManagement->getByCustomerId($this->companyContext->getCustomerId())->getId() ) { return true; } diff --git a/vendor/magento/module-purchase-order-rule/Plugin/Customer/Authorization/ViewPurchaseOrderPlugin.php b/vendor/magento/module-purchase-order-rule/Plugin/Customer/Authorization/ViewPurchaseOrderPlugin.php index 36e3f220989f..679022c76a56 100644 --- a/vendor/magento/module-purchase-order-rule/Plugin/Customer/Authorization/ViewPurchaseOrderPlugin.php +++ b/vendor/magento/module-purchase-order-rule/Plugin/Customer/Authorization/ViewPurchaseOrderPlugin.php @@ -12,2 +12,3 @@ use Magento\Company\Model\CompanyContext; +use Magento\Company\Api\CompanyManagementInterface; use Magento\Company\Model\UserRole; @@ -20,9 +21,11 @@ use Magento\PurchaseOrderRule\Api\AppliedRuleRepositoryInterface; use Magento\PurchaseOrderRule\Api\Data\AppliedRuleApproverInterface; use Magento\PurchaseOrderRule\Api\Data\AppliedRuleInterface; +use Magento\Framework\App\ObjectManager; /** * Plugin to restrict view to remaining rule approvers and company admin + * */ class ViewPurchaseOrderPlugin { @@ -61,6 +64,11 @@ class ViewPurchaseOrderPlugin */ private $appliedRuleApproverRepository; + /** + * @var CompanyManagementInterface + */ + private $companyManagement; + /** * @param CompanyAdminPermission $companyAdminPermission * @param CompanyContext $companyContext @@ -69,6 +77,7 @@ class ViewPurchaseOrderPlugin * @param AppliedRuleApproverRepositoryInterface $appliedRuleApproverRepository * @param UserRoleManagement $userRoleManagement * @param SearchCriteriaBuilder $searchCriteriaBuilder + * @param CompanyManagementInterface|null $companyManagement */ public function __construct( CompanyAdminPermission $companyAdminPermission, @@ -77,7 +86,8 @@ public function __construct( AppliedRuleRepositoryInterface $appliedRuleRepository, AppliedRuleApproverRepositoryInterface $appliedRuleApproverRepository, UserRoleManagement $userRoleManagement, - SearchCriteriaBuilder $searchCriteriaBuilder + SearchCriteriaBuilder $searchCriteriaBuilder, + ?CompanyManagementInterface $companyManagement = null ) { $this->companyAdminPermission = $companyAdminPermission; $this->companyContext = $companyContext; @@ -86,6 +96,8 @@ public function __construct( $this->appliedRuleApproverRepository = $appliedRuleApproverRepository; $this->userRoleManagement = $userRoleManagement; $this->searchCriteriaBuilder = $searchCriteriaBuilder; + $this->companyManagement = $companyManagement ?: + ObjectManager::getInstance()->get(CompanyManagementInterface::class); } /** @@ -105,6 +117,8 @@ public function afterIsAllowed(ViewPurchaseOrder $subject, $result, $purchaseOrd } if ($this->companyAdminPermission->isGivenUserCompanyAdmin($this->companyContext->getCustomerId()) && $this->companyStructure->getAllowedChildrenIds((int)$this->companyContext->getCustomerId()) + && (int) $purchaseOrder->getCompanyId() === + (int) $this->companyManagement->getByCustomerId($this->companyContext->getCustomerId())->getId() ) { return true; }