You are here

public function JsonRpcMethod::access in JSON-RPC 2.x

Same name and namespace in other branches
  1. 8 src/Annotation/JsonRpcMethod.php \Drupal\jsonrpc\Annotation\JsonRpcMethod::access()

Checks data value access.

Parameters

string $operation: The operation to be performed.

\Drupal\Core\Session\AccountInterface $account: (optional) The user for which to check access, or NULL to check access for the current user. Defaults to NULL.

bool $return_as_object: (optional) Defaults to FALSE.

Return value

bool|\Drupal\Core\Access\AccessResultInterface The access result. Returns a boolean if $return_as_object is FALSE (this is the default) and otherwise an AccessResultInterface object. When a boolean is returned, the result of AccessInterface::isAllowed() is returned, i.e. TRUE means access is explicitly allowed, FALSE means access is either explicitly forbidden or "no opinion".

Overrides AccessibleInterface::access

File

src/Annotation/JsonRpcMethod.php, line 116

Class

JsonRpcMethod
Defines a JsonRpcParameterDefinition annotation object.

Namespace

Drupal\jsonrpc\Annotation

Code

public function access($operation = 'execute', AccountInterface $account = NULL, $return_as_object = FALSE) {
  $account = $account ?: \Drupal::currentUser();
  switch ($operation) {
    case 'execute':
      if (is_callable($this->access)) {
        return call_user_func_array($this->access, [
          $operation,
          $account,
          $return_as_object,
        ]);
      }
      $access_result = AccessResult::allowed();
      foreach ($this->access as $permission) {
        $access_result = $access_result
          ->andIf(AccessResult::allowedIfHasPermission($account, $permission));
      }
      break;
    case 'view':
      $access_result = $this
        ->access('execute', $account, $return_as_object);
      break;
    default:
      $access_result = AccessResult::neutral();
      break;
  }
  return $return_as_object ? $access_result : $access_result
    ->isAllowed();
}