Issue #3069028 by alexpott: Properly Deprecate Drupal\Core\Access\AccessResult::cacheUntilConfigurationChanges

merge-requests/55/head
catch 2019-07-25 08:50:28 +01:00
parent ae248f2e43
commit 6c183523d0
4 changed files with 21 additions and 4 deletions

View File

@ -301,10 +301,11 @@ abstract class AccessResult implements AccessResultInterface, RefinableCacheable
*
* @return $this
*
* @deprecated in Drupal 8.0.x-dev, will be removed before Drupal 9.0.0. Use
* ::addCacheableDependency() instead.
* @deprecated in drupal:8.0.0 and is removed in drupal:9.0.0. Use
* \Drupal\Core\Access\AccessResult::addCacheableDependency() instead.
*/
public function cacheUntilConfigurationChanges(ConfigBase $configuration) {
@trigger_error(__METHOD__ . ' is deprecated in drupal:8.0.0 and is removed in drupal:9.0.0. Use \Drupal\Core\Access\AccessResult::addCacheableDependency() instead.', E_USER_DEPRECATED);
return $this->addCacheableDependency($configuration);
}

View File

@ -88,7 +88,7 @@ class ContactPageAccess implements AccessInterface {
// If the requested user did not save a preference yet, deny access if the
// configured default is disabled.
$contact_settings = $this->configFactory->get('contact.settings');
$access->cacheUntilConfigurationChanges($contact_settings);
$access->addCacheableDependency($contact_settings);
if (!isset($account_data) && !$contact_settings->get('user_default_enabled')) {
return $access;
}

View File

@ -23,7 +23,7 @@ class RegisterAccessCheck implements AccessInterface {
*/
public function access(AccountInterface $account) {
$user_settings = \Drupal::config('user.settings');
return AccessResult::allowedIf($account->isAnonymous() && $user_settings->get('register') != UserInterface::REGISTER_ADMINISTRATORS_ONLY)->cacheUntilConfigurationChanges($user_settings);
return AccessResult::allowedIf($account->isAnonymous() && $user_settings->get('register') != UserInterface::REGISTER_ADMINISTRATORS_ONLY)->addCacheableDependency($user_settings);
}
}

View File

@ -13,6 +13,7 @@ use Drupal\Core\Access\AccessResultNeutral;
use Drupal\Core\Access\AccessResultReasonInterface;
use Drupal\Core\Cache\Cache;
use Drupal\Core\Cache\CacheableDependencyInterface;
use Drupal\Core\Config\Config;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Tests\UnitTestCase;
@ -968,6 +969,21 @@ class AccessResultTest extends UnitTestCase {
return $data;
}
/**
* @expectedDeprecation Drupal\Core\Access\AccessResult::cacheUntilConfigurationChanges is deprecated in drupal:8.0.0 and is removed in drupal:9.0.0. Use \Drupal\Core\Access\AccessResult::addCacheableDependency() instead.
* @group legacy
*/
public function testCacheUntilConfigurationChanges() {
$config = $this->prophesize(Config::class);
$config->getCacheContexts()->willReturn(['context']);
$config->getCacheTags()->willReturn(['tag']);
$config->getCacheMaxAge()->willReturn(10);
$access_result = AccessResult::neutral()->cacheUntilConfigurationChanges($config->reveal());
$this->assertSame(['context'], $access_result->getCacheContexts());
$this->assertSame(['tag'], $access_result->getCacheTags());
$this->assertSame(10, $access_result->getCacheMaxAge());
}
}
class UncacheableTestAccessResult implements AccessResultInterface {