class PaymentAccessControlHandler in Payment 8.2
Provides an access control handler for payment entities.
Hierarchy
- class \Drupal\Core\Entity\EntityHandlerBase uses DependencySerializationTrait, StringTranslationTrait
- class \Drupal\Core\Entity\EntityAccessControlHandler implements EntityAccessControlHandlerInterface
- class \Drupal\payment\Entity\Payment\PaymentAccessControlHandler
 
 
 - class \Drupal\Core\Entity\EntityAccessControlHandler implements EntityAccessControlHandlerInterface
 
Expanded class hierarchy of PaymentAccessControlHandler
1 file declares its use of PaymentAccessControlHandler
- PaymentAccessControlHandlerTest.php in tests/
src/ Unit/ Entity/ Payment/ PaymentAccessControlHandlerTest.php  
File
- src/
Entity/ Payment/ PaymentAccessControlHandler.php, line 17  
Namespace
Drupal\payment\Entity\PaymentView source
class PaymentAccessControlHandler extends EntityAccessControlHandler {
  /**
   * {@inheritdoc}
   */
  protected function checkAccess(EntityInterface $payment, $operation, AccountInterface $account) {
    /** @var \Drupal\payment\Entity\PaymentInterface $payment */
    if ($operation == 'update_status') {
      $payment_method = $payment
        ->getPaymentMethod();
      if ($payment_method instanceof PaymentMethodUpdatePaymentStatusInterface && !$payment_method
        ->updatePaymentStatusAccess($account)) {
        return AccessResult::forbidden();
      }
    }
    elseif ($operation == 'capture') {
      $payment_method = $payment
        ->getPaymentMethod();
      if ($payment_method instanceof PaymentMethodCapturePaymentInterface) {
        return AccessResult::allowedIf($payment_method instanceof PaymentMethodCapturePaymentInterface)
          ->andIf(AccessResult::allowedIf($payment_method
          ->capturePaymentAccess($account)))
          ->andIf($this
          ->checkAccessPermission($payment, $operation, $account));
      }
      return AccessResult::forbidden();
    }
    elseif ($operation == 'refund') {
      $payment_method = $payment
        ->getPaymentMethod();
      if ($payment_method instanceof PaymentMethodRefundPaymentInterface) {
        return AccessResult::allowedIf($payment_method
          ->refundPaymentAccess($account))
          ->andIf($this
          ->checkAccessPermission($payment, $operation, $account));
      }
      return AccessResult::forbidden();
    }
    elseif ($operation == 'complete') {
      if ($payment
        ->getPaymentMethod()) {
        return AccessResult::allowedIf($payment
          ->getOwnerId() == $account
          ->id())
          ->orIf(AccessResult::forbiddenIf($payment
          ->getPaymentMethod()
          ->getPaymentExecutionResult()
          ->isCompleted()));
      }
      else {
        return AccessResult::forbidden();
      }
    }
    return $this
      ->checkAccessPermission($payment, $operation, $account);
  }
  /**
   * Checks if a user has permission to perform a payment operation.
   *
   * @param \Drupal\payment\Entity\PaymentInterface $payment
   * @param string $operation
   * @param \Drupal\Core\Session\AccountInterface
   *
   * @return \Drupal\Core\Access\AccessResultInterface
   *   The access result.
   */
  protected function checkAccessPermission(PaymentInterface $payment, $operation, AccountInterface $account) {
    return AccessResult::allowedIfHasPermission($account, 'payment.payment.' . $operation . '.any')
      ->orIf(AccessResult::allowedIfHasPermission($account, 'payment.payment.' . $operation . '.own')
      ->andIf(AccessResult::allowedIf($account
      ->id() == $payment
      ->getOwnerId())
      ->addCacheableDependency($payment)));
  }
  /**
   * {@inheritdoc}
   */
  protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) {
    // We let other modules decide whether users have access to create
    // new payments. There is no corresponding permission for this operation.
    return AccessResult::allowed();
  }
  /**
   * {@inheritdoc}
   */
  protected function getCache($cid, $operation, $langcode, AccountInterface $account) {
    // Disable the cache, because the intensive operations are cached elsewhere
    // already and the results of all other operations are too volatile to be
    // cached.
  }
}Members
| 
            Name | 
                  Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| 
            DependencySerializationTrait:: | 
                  protected | property | An array of entity type IDs keyed by the property name of their storages. | |
| 
            DependencySerializationTrait:: | 
                  protected | property | An array of service IDs keyed by property name used for serialization. | |
| 
            DependencySerializationTrait:: | 
                  public | function | 1 | |
| 
            DependencySerializationTrait:: | 
                  public | function | 2 | |
| 
            EntityAccessControlHandler:: | 
                  protected | property | Stores calculated access check results. | |
| 
            EntityAccessControlHandler:: | 
                  protected | property | Information about the entity type. | |
| 
            EntityAccessControlHandler:: | 
                  protected | property | The entity type ID of the access control handler instance. | |
| 
            EntityAccessControlHandler:: | 
                  protected | property | Allows to grant access to just the labels. | 5 | 
| 
            EntityAccessControlHandler:: | 
                  public | function | 
            Checks access to an operation on a given entity or entity translation. Overrides EntityAccessControlHandlerInterface:: | 
                  1 | 
| 
            EntityAccessControlHandler:: | 
                  protected | function | Default field access as determined by this access control handler. | 4 | 
| 
            EntityAccessControlHandler:: | 
                  public | function | 
            Checks access to create an entity. Overrides EntityAccessControlHandlerInterface:: | 
                  1 | 
| 
            EntityAccessControlHandler:: | 
                  public | function | 
            Checks access to an operation on a given entity field. Overrides EntityAccessControlHandlerInterface:: | 
                  |
| 
            EntityAccessControlHandler:: | 
                  protected | function | Loads the current account object, if it does not exist yet. | |
| 
            EntityAccessControlHandler:: | 
                  protected | function | We grant access to the entity if both of these conditions are met: | |
| 
            EntityAccessControlHandler:: | 
                  public | function | 
            Clears all cached access checks. Overrides EntityAccessControlHandlerInterface:: | 
                  |
| 
            EntityAccessControlHandler:: | 
                  protected | function | Statically caches whether the given user has access. | |
| 
            EntityAccessControlHandler:: | 
                  public | function | Constructs an access control handler instance. | 5 | 
| 
            EntityHandlerBase:: | 
                  protected | property | The module handler to invoke hooks on. | 2 | 
| 
            EntityHandlerBase:: | 
                  protected | function | Gets the module handler. | 2 | 
| 
            EntityHandlerBase:: | 
                  public | function | Sets the module handler for this handler. | |
| 
            PaymentAccessControlHandler:: | 
                  protected | function | 
            Performs access checks. Overrides EntityAccessControlHandler:: | 
                  |
| 
            PaymentAccessControlHandler:: | 
                  protected | function | Checks if a user has permission to perform a payment operation. | |
| 
            PaymentAccessControlHandler:: | 
                  protected | function | 
            Performs create access checks. Overrides EntityAccessControlHandler:: | 
                  |
| 
            PaymentAccessControlHandler:: | 
                  protected | function | 
            Tries to retrieve a previously cached access value from the static cache. Overrides EntityAccessControlHandler:: | 
                  |
| 
            StringTranslationTrait:: | 
                  protected | property | The string translation service. | 1 | 
| 
            StringTranslationTrait:: | 
                  protected | function | Formats a string containing a count of items. | |
| 
            StringTranslationTrait:: | 
                  protected | function | Returns the number of plurals supported by a given language. | |
| 
            StringTranslationTrait:: | 
                  protected | function | Gets the string translation service. | |
| 
            StringTranslationTrait:: | 
                  public | function | Sets the string translation service to use. | 2 | 
| 
            StringTranslationTrait:: | 
                  protected | function | Translates a string to the current language or to a given language. |