commit f4bee34430c3853245710d7bb9e658c33bf260dc
Author: Bart Feenstra <bart@mynameisbart.com>
Date:   Wed Feb 19 10:23:38 2014 +0100

    foo

diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigAccessController.php b/core/lib/Drupal/Core/Config/Entity/ConfigAccessController.php
new file mode 100644
index 0000000..9af7969
--- /dev/null
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigAccessController.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Config\Entity\ConfigAccessController.
+ */
+
+namespace Drupal\Core\Entity;
+
+use Drupal\Core\Session\AccountInterface;
+
+/**
+ * Provides default access control for configuration entities.
+ */
+class ConfigAccessController extends EntityAccessController {
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function checkAccess(EntityInterface $entity, $operation, $langcode, AccountInterface $account) {
+    /** @var \Drupal\Core\Config\Entity\ConfigEntityInterface $entity */
+    if (in_array($operation, array('enable', 'disable')) && $this->entityType->hasKey('status')) {
+      $can_perform_operation = $operation == 'disable' ? $entity->status() : !$entity->status();
+      // We need to check access to an additional operation, so self::access()
+      // must be called.
+      return $can_perform_operation && $this->access($entity, 'update', $langcode, $account);
+    }
+    return parent::checkAccess($entity, $operation, $langcode, $account);
+  }
+
+}
diff --git a/core/modules/search/lib/Drupal/search/SearchPageAccessController.php b/core/modules/search/lib/Drupal/search/SearchPageAccessController.php
index cd51278..7ac28e9 100644
--- a/core/modules/search/lib/Drupal/search/SearchPageAccessController.php
+++ b/core/modules/search/lib/Drupal/search/SearchPageAccessController.php
@@ -8,14 +8,14 @@
 namespace Drupal\search;
 
 use Drupal\Core\Access\AccessibleInterface;
-use Drupal\Core\Entity\EntityAccessController;
+use Drupal\Core\Entity\ConfigAccessController;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Session\AccountInterface;
 
 /**
  * Defines the access controller for the search page entity type.
  */
-class SearchPageAccessController extends EntityAccessController {
+class SearchPageAccessController extends ConfigAccessController {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/views/lib/Drupal/views/ViewAccessController.php b/core/modules/views/lib/Drupal/views/ViewAccessController.php
index e761af2..7043d7f 100644
--- a/core/modules/views/lib/Drupal/views/ViewAccessController.php
+++ b/core/modules/views/lib/Drupal/views/ViewAccessController.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views;
 
-use Drupal\Core\Entity\EntityAccessController;
+use Drupal\Core\Entity\ConfigAccessController;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Language\Language;
 use Drupal\Core\Session\AccountInterface;
@@ -15,7 +15,7 @@
 /**
  * Defines the access controller for the view entity type.
  */
-class ViewAccessController extends EntityAccessController {
+class ViewAccessController extends ConfigAccessController {
 
   /**
    * {@inheritdoc}
