$OpenBSD$
--- masquerade.module.orig	Mon Jul 27 14:43:25 2009
+++ masquerade.module	Mon Jul 27 14:56:07 2009
@@ -284,14 +284,21 @@ function masquerade_block_1($record) {
  */
 function masquerade_block_1_validate($form, &$form_state) {
   unset($form);
-  if ($form_state['values']['masquerade_user_field'] == '') {
+  $name = $form_state['values']['masquerade_user_field'];
+  if ($name == '') {
     form_set_error('masquerade_user_field', t('You cannot masquerade as %anonymous!', array('%anonymous' => variable_get('anonymous', 'Anonymous'))));
   }
   if ($GLOBALS['masquerading']) {
     form_set_error('masquerade_user_field', t('You are already masquerading!'));
   }
   global $user;
-  $masq_user = user_load(array('name' => $form_state['values']['masquerade_user_field']));
+  if (module_exists('alt_login')) {
+    $alt_login = db_fetch_object(db_query("SELECT u.name FROM {users} u INNER JOIN {alt_login} al ON u.uid = al.uid WHERE al.alt_login = '%s'", $name));
+    if ($alt_login->name) {
+      $name = $alt_login->name;
+    }
+  }
+  $masq_user = user_load(array('name' => $name));
   if (!$masq_user) {
     form_set_error('masquerade_user_field', t('User %masq_as does not exist. Please enter a valid username.', array('%masq_as' => $form_state['values']['masquerade_user_field'])));
   }
@@ -308,15 +315,16 @@ function masquerade_block_1_validate($form, &$form_sta
  */
 function masquerade_block_1_submit($form, &$form_state) {
   unset($form);
-  $masq_user = user_load(array('name' => $form_state['values']['masquerade_user_field']));
-
-  if (module_exists('alt_login')) { // alt_login.module integration patch by espie.
+  $name = $form_state['values']['masquerade_user_field'];
+  if (module_exists('alt_login')) {
     $alt_login = db_fetch_object(db_query("SELECT u.name FROM {users} u INNER JOIN {alt_login} al ON u.uid = al.uid WHERE al.alt_login = '%s'", $name));
     if ($alt_login->name) {
-      $masq_user = user_load(array('name' => $alt_login->name));
+      $name = $alt_login->name;
     }
   }
 
+  $masq_user = user_load(array('name' => $name));
+
   masquerade_switch_user($masq_user->uid);
 }
 
@@ -328,6 +336,12 @@ function masquerade_autocomplete($string) {
   $result = db_query_range("SELECT u.name FROM {users} u WHERE LOWER(u.name) LIKE LOWER('%s%%')", $string, 0, 10);
   while ($user = db_fetch_object($result)) {
     $matches[$user->name] = check_plain($user->name);
+  }
+  if (module_exists('alt_login')) {
+    $result = db_query_range("SELECT alt_login FROM {alt_login} u WHERE LOWER(alt_login) LIKE LOWER('%s%%')", $string, 0, 10);
+    while ($user = db_fetch_object($result)) {
+      $matches[$user->alt_login] = check_plain($user->alt_login);
+    }
   }
   print drupal_to_js($matches);
   exit();
