diff --git a/src/WebformEntityListBuilder.php b/src/WebformEntityListBuilder.php
index 15068817..958aa4ec 100644
--- a/src/WebformEntityListBuilder.php
+++ b/src/WebformEntityListBuilder.php
@@ -46,6 +46,20 @@ class WebformEntityListBuilder extends ConfigEntityListBuilder {
    */
   protected $submissionStorage;
 
+  /**
+   * User storage.
+   *
+   * @var \Drupal\user\UserStorageInterface
+   */
+  protected $userStorage;
+
+  /**
+   * Role storage.
+   *
+   * @var \Drupal\user\RoleStorageInterface
+   */
+  protected $roleStorage;
+
   /**
    * {@inheritdoc}
    */
@@ -56,6 +70,8 @@ class WebformEntityListBuilder extends ConfigEntityListBuilder {
     $this->category = \Drupal::request()->query->get('category');
     $this->state = \Drupal::request()->query->get('state');
     $this->submissionStorage = \Drupal::entityTypeManager()->getStorage('webform_submission');
+    $this->userStorage = \Drupal::entityTypeManager()->getStorage('user');
+    $this->roleStorage = \Drupal::entityTypeManager()->getStorage('user_role');
   }
 
   /**
@@ -326,11 +342,45 @@ class WebformEntityListBuilder extends ConfigEntityListBuilder {
     // Filter by key(word).
     if ($keys) {
       $or = $query->orConditionGroup()
-        ->condition('id', $this->keys, 'CONTAINS')
-        ->condition('title', $this->keys, 'CONTAINS')
-        ->condition('description', $this->keys, 'CONTAINS')
-        ->condition('category', $this->keys, 'CONTAINS')
-        ->condition('elements', $this->keys, 'CONTAINS');
+        ->condition('id', $keys, 'CONTAINS')
+        ->condition('title', $keys, 'CONTAINS')
+        ->condition('description', $keys, 'CONTAINS')
+        ->condition('category', $keys, 'CONTAINS')
+        ->condition('elements', $keys, 'CONTAINS');
+
+      // Users and roles we need to scan all webforms.
+      $access_value = NULL;
+      if ($accounts = $this->userStorage->loadByProperties(['name' => $keys])) {
+        $account = reset($accounts);
+        $access_type = 'users';
+        $access_value = $account->id();
+      }
+      elseif ($role = $this->roleStorage->load($keys)) {
+        $access_type = 'roles';
+        $access_value = $role->id();
+      }
+      if ($access_value) {
+        // Collect the webform ids that the user or role has access to.
+        $webform_ids = [];
+        /** @var \Drupal\webform\WebformInterface $webforms */
+        $webforms = $this->getStorage()->loadMultiple();
+        foreach ($webforms as $webform) {
+          $access_rules = $webform->getAccessRules();
+          foreach ($access_rules as $access_rule) {
+            if (!empty($access_rule[$access_type]) && in_array($access_value, $access_rule[$access_type])) {
+              $webform_ids[] = $webform->id();
+              break;
+            }
+          }
+        }
+        if ($webform_ids) {
+          $or->condition('id', $webform_ids, 'IN');
+        }
+        // Also check the webform's owner.
+        if ($access_type == 'users') {
+          $or->condition('uid', $access_value);
+        }
+      }
       $query->condition($or);
     }
 
