diff --git a/core/authorize.php b/core/authorize.php
index ecb7e22..89bb8bc 100644
--- a/core/authorize.php
+++ b/core/authorize.php
@@ -58,7 +58,7 @@ function authorize_access_denied_page() {
 function authorize_access_allowed() {
   require_once DRUPAL_ROOT . '/' . settings()->get('session_inc', 'core/includes/session.inc');
   drupal_session_initialize();
-  return settings()->get('allow_authorize_operations', TRUE) && user_access('administer software updates');
+  return settings()->get('allow_authorize_operations', TRUE) && Drupal::currentUser()->hasPermission('administer software updates');
 }
 
 // *** Real work of the script begins here. ***
diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index 6d70110..9bd445c 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -2860,13 +2860,13 @@ function drupal_classloader_register($name, $path) {
  *
  * Example:
  * @code
- * function user_access($string, $account = NULL) {
+ * function datetime_default_format_type() {
  *   // Use the advanced drupal_static() pattern, since this is called very often.
  *   static $drupal_static_fast;
  *   if (!isset($drupal_static_fast)) {
- *     $drupal_static_fast['perm'] = &drupal_static(__FUNCTION__);
+ *     $drupal_static_fast['format_type'] = &drupal_static(__FUNCTION__);
  *   }
- *   $perm = &$drupal_static_fast['perm'];
+ *   $format_type = &$drupal_static_fast['format_type'];
  *   ...
  * }
  * @endcode
diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index 856c424..3436c1b 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -599,10 +599,10 @@ function _menu_check_access(&$item, $map) {
   }
   else {
     $arguments = menu_unserialize($item['access_arguments'], $map);
-    // As call_user_func_array is quite slow and user_access is a very common
+    // As call_user_func_array is quite slow and user_access is a very common 
     // callback, it is worth making a special case for it.
     if ($callback == 'user_access') {
-      $item['access'] = (count($arguments) == 1) ? user_access($arguments[0]) : user_access($arguments[0], $arguments[1]);
+      $item['access'] = (count($arguments) == 1) ? Drupal::currentUser()->hasPermission($arguments[0]) : Drupal::currentUser()->hasPermission($arguments[1]);
     }
     else {
       $item['access'] = call_user_func_array($callback, $arguments);
diff --git a/core/lib/Drupal/Core/Extension/UpdateModuleHandler.php b/core/lib/Drupal/Core/Extension/UpdateModuleHandler.php
index 7d7ac9c..e34b16e 100644
--- a/core/lib/Drupal/Core/Extension/UpdateModuleHandler.php
+++ b/core/lib/Drupal/Core/Extension/UpdateModuleHandler.php
@@ -46,7 +46,9 @@ public function getImplementations($hook) {
         return array('system');
       // This is called during rebuild to find testing themes.
       case 'system_theme_info':
-      // Those are needed by user_access() to check access on update.php.
+      // Those are needed by
+      // \Drupal\Core\Session\AccountInterface::hasPermission() to check access
+      // on update.php.
       case 'entity_info':
       case 'entity_load':
       case 'user_role_load':
diff --git a/core/update.php b/core/update.php
index 527a703..50f9680 100644
--- a/core/update.php
+++ b/core/update.php
@@ -70,7 +70,7 @@ function update_helpful_links() {
     'title' => t('Front page'),
     'href' => '<front>',
   );
-  if (user_access('access administration pages')) {
+  if (Drupal::currentUser()->hasPermission('access administration pages')) {
     $links['admin-pages'] = array(
       'title' => t('Administration pages'),
       'href' => 'admin',
