function AccountPermissionsCacheContext::getCacheableMetadata

Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/Cache/Context/AccountPermissionsCacheContext.php \Drupal\Core\Cache\Context\AccountPermissionsCacheContext::getCacheableMetadata()
  2. 10 core/lib/Drupal/Core/Cache/Context/AccountPermissionsCacheContext.php \Drupal\Core\Cache\Context\AccountPermissionsCacheContext::getCacheableMetadata()
  3. 11.x core/lib/Drupal/Core/Cache/Context/AccountPermissionsCacheContext.php \Drupal\Core\Cache\Context\AccountPermissionsCacheContext::getCacheableMetadata()

Overrides CacheContextInterface::getCacheableMetadata

File

core/lib/Drupal/Core/Cache/Context/AccountPermissionsCacheContext.php, line 53

Class

AccountPermissionsCacheContext
Defines the AccountPermissionsCacheContext service, for "per permission" caching.

Namespace

Drupal\Core\Cache\Context

Code

public function getCacheableMetadata() {
    $cacheable_metadata = new CacheableMetadata();
    // The permissions hash changes when:
    // - a user is updated to have different roles;
    $tags = [
        'user:' . $this->user
            ->id(),
    ];
    // - a role is updated to have different permissions.
    foreach ($this->user
        ->getRoles() as $rid) {
        $tags[] = "config:user.role.{$rid}";
    }
    return $cacheable_metadata->setCacheTags($tags);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.