Chris@0: account = $account; Chris@18: $this->userStorage = $entity_type_manager->getStorage('user'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getRuntimeContexts(array $unqualified_context_ids) { Chris@0: $current_user = $this->userStorage->load($this->account->id()); Chris@0: Chris@14: if ($current_user) { Chris@14: // @todo Do not validate protected fields to avoid bug in TypedData, Chris@14: // remove this in https://www.drupal.org/project/drupal/issues/2934192. Chris@14: $current_user->_skipProtectedUserFieldConstraint = TRUE; Chris@18: Chris@18: $context = EntityContext::fromEntity($current_user, $this->t('Current user')); Chris@18: } Chris@18: else { Chris@18: // If not user is available, provide an empty context object. Chris@18: $context = EntityContext::fromEntityTypeId('user', $this->t('Current user')); Chris@14: } Chris@14: Chris@0: $cacheability = new CacheableMetadata(); Chris@0: $cacheability->setCacheContexts(['user']); Chris@0: $context->addCacheableDependency($cacheability); Chris@0: Chris@0: $result = [ Chris@0: 'current_user' => $context, Chris@0: ]; Chris@0: Chris@0: return $result; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getAvailableContexts() { Chris@0: return $this->getRuntimeContexts([]); Chris@0: } Chris@0: Chris@0: }