ProductVariationAccessControlHandler.php in Commerce Core 8.2
File
modules/product/src/ProductVariationAccessControlHandler.php
View source
<?php
namespace Drupal\commerce_product;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Entity\EntityAccessControlHandler as CoreEntityAccessControlHandler;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Session\AccountInterface;
class ProductVariationAccessControlHandler extends CoreEntityAccessControlHandler {
protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) {
if ($account
->hasPermission($this->entityType
->getAdminPermission())) {
return AccessResult::allowed()
->cachePerPermissions();
}
$product = $entity
->getProduct();
if (!$product) {
return AccessResult::forbidden()
->addCacheableDependency($entity);
}
if ($operation === 'view') {
$result = $product
->access('view', $account, TRUE);
assert($result instanceof AccessResult);
$result
->addCacheableDependency($entity);
}
else {
$bundle = $entity
->bundle();
$result = AccessResult::allowedIfHasPermission($account, "manage {$bundle} commerce_product_variation")
->cachePerPermissions();
}
return $result;
}
protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) {
$result = AccessResult::allowedIfHasPermissions($account, [
$this->entityType
->getAdminPermission(),
"manage {$entity_bundle} commerce_product_variation",
], 'OR');
return $result;
}
}