Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

UserRolesCacheContext.php

Namespace

Drupal\Core\Cache\Context

File

core/lib/Drupal/Core/Cache/Context/UserRolesCacheContext.php

View source
<?php

namespace Drupal\Core\Cache\Context;

use Drupal\Core\Cache\CacheableMetadata;

/**
 * Defines the UserRolesCacheContext service, for "per role" caching.
 *
 * Only use this cache context when checking explicitly for certain roles. Use
 * user.permissions for anything that checks permissions.
 *
 * Cache context ID: 'user.roles' (to vary by all roles of the current user).
 * Calculated cache context ID: 'user.roles:%role', e.g. 'user.roles:anonymous'
 * (to vary by the presence/absence of a specific role).
 */
class UserRolesCacheContext extends UserCacheContextBase implements CalculatedCacheContextInterface {
    
    /**
     * {@inheritdoc}
     */
    public static function getLabel() {
        return t("User's roles");
    }
    
    /**
     * {@inheritdoc}
     */
    public function getContext($role = NULL) {
        if ($role === NULL) {
            return implode(',', $this->user
                ->getRoles());
        }
        else {
            return in_array($role, $this->user
                ->getRoles()) ? 'true' : 'false';
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public function getCacheableMetadata($role = NULL) {
        return (new CacheableMetadata())->setCacheTags([
            'user:' . $this->user
                ->id(),
        ]);
    }

}

Classes

Title Deprecated Summary
UserRolesCacheContext Defines the UserRolesCacheContext service, for "per role" caching.

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal