diff --git a/core/modules/block/lib/Drupal/block/BlockAccessController.php b/core/modules/block/lib/Drupal/block/BlockAccessController.php
index 315e4f6ec97f21b5984c27e3004f429cac1b185e..6e2c1a512d5578f6139d15b6502a497481b18a24 100644
--- a/core/modules/block/lib/Drupal/block/BlockAccessController.php
+++ b/core/modules/block/lib/Drupal/block/BlockAccessController.php
@@ -56,7 +56,7 @@ public static function createInstance(ContainerInterface $container, EntityTypeI
    */
   protected function checkAccess(EntityInterface $entity, $operation, $langcode, AccountInterface $account) {
     if ($operation != 'view') {
-      return $account->hasPermission('administer blocks');
+      return parent::checkAccess($entity, $operation, $langcode, $account);
     }
 
     // Deny access to disabled blocks.
diff --git a/core/modules/block/lib/Drupal/block/Entity/Block.php b/core/modules/block/lib/Drupal/block/Entity/Block.php
index 926ef07bc92d5a4925a77180ec673d70d57a2ec5..fe82d446d37853c2f229e6e5ebe5fadc139e464a 100644
--- a/core/modules/block/lib/Drupal/block/Entity/Block.php
+++ b/core/modules/block/lib/Drupal/block/Entity/Block.php
@@ -29,6 +29,7 @@
  *     }
  *   },
  *   config_prefix = "block.block",
+ *   admin_permission = "administer blocks",
  *   fieldable = FALSE,
  *   entity_keys = {
  *     "id" = "id",
diff --git a/core/modules/contact/lib/Drupal/contact/CategoryAccessController.php b/core/modules/contact/lib/Drupal/contact/CategoryAccessController.php
index 59ee2c7f0cbe2e9f49266cf102b51a231d5e316e..f798d7980f3ddc7172a27c128a45734805853243 100644
--- a/core/modules/contact/lib/Drupal/contact/CategoryAccessController.php
+++ b/core/modules/contact/lib/Drupal/contact/CategoryAccessController.php
@@ -31,9 +31,8 @@ public function checkAccess(EntityInterface $entity, $operation, $langcode, Acco
       // the personal contact form.
       return $account->hasPermission('administer contact forms') && $entity->id() !== 'personal';
     }
-    else {
-      return $account->hasPermission('administer contact forms');
-    }
+
+    return parent::checkAccess($entity, $operation, $langcode, $account);
   }
 
 }
diff --git a/core/modules/contact/lib/Drupal/contact/Entity/Category.php b/core/modules/contact/lib/Drupal/contact/Entity/Category.php
index 2c2166acab596b3f10ab6da386219681945de486..86fa0f1fb3e755ab8d75dd89e8fb9abfe68bf1b9 100644
--- a/core/modules/contact/lib/Drupal/contact/Entity/Category.php
+++ b/core/modules/contact/lib/Drupal/contact/Entity/Category.php
@@ -28,6 +28,7 @@
  *     }
  *   },
  *   config_prefix = "contact.category",
+ *   admin_permission = "administer contact forms",
  *   bundle_of = "contact_message",
  *   entity_keys = {
  *     "id" = "id",
diff --git a/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php b/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php
index fa0d2cc67091bd9491f369ecffa5e62fb61b0f9c..0bb5dec875e1d421b8a989472e7bacdd7661bbfc 100644
--- a/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php
+++ b/core/modules/filter/lib/Drupal/filter/Entity/FilterFormat.php
@@ -30,6 +30,7 @@
  *     "storage" = "Drupal\Core\Config\Entity\ConfigStorageController"
  *   },
  *   config_prefix = "filter.format",
+ *   admin_permission = "administer filters",
  *   entity_keys = {
  *     "id" = "format",
  *     "label" = "name",
diff --git a/core/modules/filter/lib/Drupal/filter/FilterFormatAccessController.php b/core/modules/filter/lib/Drupal/filter/FilterFormatAccessController.php
index a1edbd963e2d33e16ae4d977bf26c33a13c9bd5a..9d3207d0a3f8114a2f71cc7d6cd4420fe1383a7a 100644
--- a/core/modules/filter/lib/Drupal/filter/FilterFormatAccessController.php
+++ b/core/modules/filter/lib/Drupal/filter/FilterFormatAccessController.php
@@ -31,7 +31,7 @@ protected function checkAccess(EntityInterface $entity, $operation, $langcode, A
       return FALSE;
     }
 
-    if ($operation != 'view' && $account->hasPermission('administer filters')) {
+    if ($operation != 'view' && parent::checkAccess($entity, $operation, $langcode, $account)) {
       return TRUE;
     }
 
@@ -41,11 +41,4 @@ protected function checkAccess(EntityInterface $entity, $operation, $langcode, A
     return !empty($permission) && $account->hasPermission($permission);
   }
 
-  /**
-   * {@inheritdoc}
-   */
-  protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) {
-    return $account->hasPermission('administer filters');
-  }
-
 }
diff --git a/core/modules/system/lib/Drupal/system/DateFormatAccessController.php b/core/modules/system/lib/Drupal/system/DateFormatAccessController.php
index 9608271fc83865ee48765467781d15b9f16ed10f..a5483b627df8fbabc01b0a34b59a700597b3a86b 100644
--- a/core/modules/system/lib/Drupal/system/DateFormatAccessController.php
+++ b/core/modules/system/lib/Drupal/system/DateFormatAccessController.php
@@ -25,10 +25,11 @@ protected function checkAccess(EntityInterface $entity, $operation, $langcode, A
       return TRUE;
     }
     // Locked date formats cannot be updated or deleted.
-    if (in_array($operation, array('update', 'delete')) && $entity->isLocked()) {
+    elseif (in_array($operation, array('update', 'delete')) && $entity->isLocked()) {
       return FALSE;
     }
-    return user_access('administer site configuration', $account);
+
+    return parent::checkAccess($entity, $operation, $langcode, $account);
   }
 
 }
diff --git a/core/modules/system/lib/Drupal/system/Entity/DateFormat.php b/core/modules/system/lib/Drupal/system/Entity/DateFormat.php
index 5b052523c63d28e9d07ae60dba58c790fcd40fed..35ad4ab72303508932614953a9eb28e20a420996 100644
--- a/core/modules/system/lib/Drupal/system/Entity/DateFormat.php
+++ b/core/modules/system/lib/Drupal/system/Entity/DateFormat.php
@@ -34,6 +34,7 @@
  *     "label" = "label",
  *     "uuid" = "uuid"
  *   },
+ *   admin_permission = "administer site configuration",
  *   links = {
  *     "edit-form" = "system.date_format_edit"
  *   }
diff --git a/core/modules/system/lib/Drupal/system/Entity/Menu.php b/core/modules/system/lib/Drupal/system/Entity/Menu.php
index fa5d7fda54d7c44e2287dc514a61efcf6b9931ce..fb09c0464e4b8e5b94e34f4797fe22e48c90629d 100644
--- a/core/modules/system/lib/Drupal/system/Entity/Menu.php
+++ b/core/modules/system/lib/Drupal/system/Entity/Menu.php
@@ -21,6 +21,7 @@
  *     "access" = "Drupal\system\MenuAccessController"
  *   },
  *   config_prefix = "system.menu",
+ *   admin_permission = "administer menu",
  *   entity_keys = {
  *     "id" = "id",
  *     "label" = "label",
diff --git a/core/modules/system/lib/Drupal/system/MenuAccessController.php b/core/modules/system/lib/Drupal/system/MenuAccessController.php
index b6e7f7adc549f857ca8a50cdcb955bd79e858c52..fe8436878c384f38c1342aa300df7b83673386ac 100644
--- a/core/modules/system/lib/Drupal/system/MenuAccessController.php
+++ b/core/modules/system/lib/Drupal/system/MenuAccessController.php
@@ -23,23 +23,12 @@ protected function checkAccess(EntityInterface $entity, $operation, $langcode, A
     if ($operation === 'view') {
       return TRUE;
     }
-    elseif ($operation == 'delete') {
-      // Locked menus could not be deleted.
-      if ($entity->isLocked()) {
-        return FALSE;
-      }
+    // Locked menus could not be deleted.
+    elseif ($operation == 'delete' && $entity->isLocked()) {
+      return FALSE;
     }
 
-    if (in_array($operation, array('update', 'delete'))) {
-      return $account->hasPermission('administer menu');
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function checkCreateAccess(AccountInterface $account, array $context, $entity_bundle = NULL) {
-    return $account->hasPermission('administer menu');
+    return parent::checkAccess($entity, $operation, $langcode, $account);
   }
 
 }