You are here

class CouponAccessControlHandler in Commerce Core 8.2

Provides an access control handler for coupons.

Coupons are always managed in the scope of their parent (the promotion), so they have a simplified permission set, and rely on parent access:

  • A coupon can be viewed if the parent promotion can be viewed.
  • A coupon can be updated or deleted if the parent promotion can be updated.
  • A coupon can be created if the user has permission to update promotions.

The "administer commerce_promotion" permission is also respected.

Hierarchy

Expanded class hierarchy of CouponAccessControlHandler

File

modules/promotion/src/CouponAccessControlHandler.php, line 21

Namespace

Drupal\commerce_promotion
View source
class CouponAccessControlHandler extends EntityAccessControlHandler {

  /**
   * {@inheritdoc}
   */
  public function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) {
    if ($account
      ->hasPermission($this->entityType
      ->getAdminPermission())) {
      return AccessResult::allowed()
        ->cachePerPermissions();
    }

    /** @var \Drupal\commerce_promotion\Entity\CouponInterface $entity */
    $promotion = $entity
      ->getPromotion();
    if (!$promotion) {

      // The coupon is malformed.
      return AccessResult::forbidden()
        ->addCacheableDependency($entity);
    }
    $parent_operation = $operation == 'view' ? 'view' : 'update';
    $result = $promotion
      ->access($parent_operation, $account, TRUE);
    return $result;
  }

  /**
   * {@inheritdoc}
   */
  public function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) {
    return AccessResult::allowedIfHasPermissions($account, [
      'administer commerce_promotion',
      'update any commerce_promotion',
    ], 'OR');
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CouponAccessControlHandler::checkAccess public function Performs access checks. Overrides EntityAccessControlHandler::checkAccess
CouponAccessControlHandler::checkCreateAccess public function Performs create access checks. Overrides EntityAccessControlHandler::checkCreateAccess
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
EntityAccessControlHandler::$accessCache protected property Stores calculated access check results.
EntityAccessControlHandler::$entityType protected property Information about the entity type.
EntityAccessControlHandler::$entityTypeId protected property The entity type ID of the access control handler instance.
EntityAccessControlHandler::$viewLabelOperation protected property Allows to grant access to just the labels. 5
EntityAccessControlHandler::access public function Checks access to an operation on a given entity or entity translation. Overrides EntityAccessControlHandlerInterface::access 1
EntityAccessControlHandler::checkFieldAccess protected function Default field access as determined by this access control handler. 4
EntityAccessControlHandler::createAccess public function Checks access to create an entity. Overrides EntityAccessControlHandlerInterface::createAccess 1
EntityAccessControlHandler::fieldAccess public function Checks access to an operation on a given entity field. Overrides EntityAccessControlHandlerInterface::fieldAccess
EntityAccessControlHandler::getCache protected function Tries to retrieve a previously cached access value from the static cache.
EntityAccessControlHandler::prepareUser protected function Loads the current account object, if it does not exist yet.
EntityAccessControlHandler::processAccessHookResults protected function We grant access to the entity if both of these conditions are met:
EntityAccessControlHandler::resetCache public function Clears all cached access checks. Overrides EntityAccessControlHandlerInterface::resetCache
EntityAccessControlHandler::setCache protected function Statically caches whether the given user has access.
EntityAccessControlHandler::__construct public function Constructs an access control handler instance. 5
EntityHandlerBase::$moduleHandler protected property The module handler to invoke hooks on. 2
EntityHandlerBase::moduleHandler protected function Gets the module handler. 2
EntityHandlerBase::setModuleHandler public function Sets the module handler for this handler.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.