diff --git a/acl.admin.inc b/acl.admin.inc
index 886fc9d..e76ae06 100644
--- a/acl.admin.inc
+++ b/acl.admin.inc
@@ -7,6 +7,7 @@
 
 use Drupal\Component\Utility\Html;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Entity\Element\EntityAutocomplete;
 
 /**
  * Implementation of acl_edit_form().
@@ -68,11 +69,12 @@ function _acl_edit_form($acl_id, $label = NULL, $new_acl = FALSE) {
   );
 
   $form['add'] = array(
-    '#type' => 'textfield',
+    '#type' => 'entity_autocomplete',
+    '#target_type' => 'user',
     '#title' => t('Add user'),
     '#maxlength' => 60,
     '#size' => 40,
-    '#autocomplete_path' => 'user/autocomplete',
+    '#selection_settings' => ['include_anonymous' => FALSE],
   );
   $form['add_button'] = array(
     '#type' => 'button',
@@ -111,9 +113,18 @@ function _acl_edit_form_after_build($form, FormStateInterface $form_state) {
     }
   }
   elseif (!empty($triggering_element['#value']) && $triggering_element['#value'] == $form['add_button']['#value'] && !empty($form['add']['#value'])) {
-    $user = \Drupal::database()->query("SELECT u.uid, ud.name FROM {users} u INNER JOIN {users_field_data} ud ON u.uid = ud.uid WHERE ud.name = :name", [
-      'name' => $form['add']['#value'],
-    ])->fetchObject();
+    $value = $form['add']['#value'];
+    $match = EntityAutocomplete::extractEntityIdFromAutocompleteInput($value);
+    if ($match === NULL) {
+      $user = \Drupal::database()->query("SELECT u.uid, ud.name FROM {users} u INNER JOIN {users_field_data} ud ON u.uid = ud.uid WHERE ud.name = :name", [
+        'name' => $value,
+      ])->fetchObject();
+    }
+    else {
+      $user = \Drupal::database()->query("SELECT u.uid, ud.name FROM {users} u INNER JOIN {users_field_data} ud ON u.uid = ud.uid WHERE u.uid = :id", [
+        'id' => $match,
+      ])->fetchObject();
+    }
     if (!$user) {
       $form_state->setError($form['add'], t("Invalid user specified."));
     }
