You are here

function apigee_api_catalog_jsonapi_apidoc_filter_access in Apigee API Catalog 8

Implements hook_jsonapi_ENTITY_TYPE_filter_access() for 'apidoc'.

File

./apigee_api_catalog.module, line 50
Copyright 2019 Google Inc.

Code

function apigee_api_catalog_jsonapi_apidoc_filter_access(EntityTypeInterface $entity_type, AccountInterface $account) {

  // Allow admins to see all entities.
  if (($admin_permission = $entity_type
    ->getAdminPermission()) && $account
    ->hasPermission($admin_permission)) {
    return [
      JSONAPI_FILTER_AMONG_ALL => AccessResult::allowed()
        ->cachePerPermissions(),
    ];
  }

  // Allow all entities if account has view published and unpublished or
  // account had API Catalog admin permission.
  if ($account
    ->hasPermission('view published apidoc entities') && $account
    ->hasPermission('view unpublished apidoc entities')) {
    return [
      JSONAPI_FILTER_AMONG_ALL => AccessResult::allowed()
        ->cachePerPermissions(),
    ];
  }

  // Allow access to published entities if user has permission to view
  // published.
  return [
    JSONAPI_FILTER_AMONG_PUBLISHED => AccessResult::allowedIfHasPermission($account, 'view published apidoc entities'),
  ];
}