diff --git a/entityreference_typeahead.module b/entityreference_typeahead.module
index 2d464b8..724240e 100644
--- a/entityreference_typeahead.module
+++ b/entityreference_typeahead.module
@@ -375,3 +375,27 @@ function entityreference_typeahead_entityreference_typeahead_properties($entity_
   // Get all entities.
   return array();
 }
+
+ /**
+ * Implements hook_query_alter().
+ */
+ function entityreference_typeahead_query_alter(QueryAlterableInterface $query) {
+  if ($query->hasTag('typeahead_users_by_role')) {
+    $tables = $query->getTables();
+
+    // Not sure this will happen
+    if (empty($tables)) {
+      return;
+    }
+
+    if (!isset($tables['users'])) {
+      $first_table = reset($tables);
+      $alias = $first_table['alias'];
+      $query->join('users', 'users', $alias . '.entity_id = users.uid');
+    }
+    $query->join('users_roles', 'users_roles', 'users.uid = users_roles.uid');
+    $roles = $query->getMetaData('roles');
+    dpm($roles);
+    $query->condition('users_roles.rid', (array) $roles, 'IN');
+  }
+}
diff --git a/includes/typeahead_callback.inc b/includes/typeahead_callback.inc
index cd9b9f5..d226210 100644
--- a/includes/typeahead_callback.inc
+++ b/includes/typeahead_callback.inc
@@ -54,6 +54,32 @@ function entityreference_typeahead_typeahead_callback($type, $field_name, $entit
       $query->entityCondition('bundle', $bundle);
     }
 
+    if ($entity_type == 'user') {
+      $field = field_info_field($field_name);
+
+      // Filter user by status.
+      $active = $field['settings']['handler_settings']['referenceable_status']['active'];
+      $blocked = $field['settings']['handler_settings']['referenceable_status']['blocked'];
+      if ($active xor $blocked) {
+        if ($active) {
+          $query->propertyCondition('status', 1);
+        }
+        elseif ($blocked) {
+          $query->propertyCondition('status', 0);
+        }
+      }
+
+      // Filter user by roles.
+      $roles = array();
+      foreach ($field['settings']['handler_settings']['referenceable_roles'] as $rid => $enabled) {
+        if ($enabled) {
+          $roles[] = $rid;
+        }
+      }
+      $query->addTag('typeahead_users_by_role');
+      $query->addMetaData('roles', $roles);
+    }
+
     $ids = array();
     $ids = array_merge($ids, entityreference_typeahead_search_by_properties($query, $tag_last, $entity_type, $bundle));
     $ids = array_merge($ids, entityreference_typeahead_search_by_fields($query, $tag_last, $entity_type, $bundle));
