diff --git a/user_registrationpassword.pages.inc b/user_registrationpassword.pages.inc
index 5a50a5f..b47be13 100644
--- a/user_registrationpassword.pages.inc
+++ b/user_registrationpassword.pages.inc
@@ -11,9 +11,18 @@
 function user_registrationpassword_confirm_account($form, &$form_state, $uid, $timestamp, $hashed_pass) {
   global $user;
 
+  // This assumes that an existing but not yet validated user
+  // has the "preauthorized_user" role associated with it.
+  if (is_array($user->roles) ) {
+    $is_preauth = in_array('preauthorized user', $user->roles);
+  }
+  else {
+    $is_preauth = FALSE;
+  }
+
   // When processing the one-time login link, we have to make sure that a user
   // isn't already logged in.
-  if ($user->uid) {
+  if ($user->uid || $is_preauth) {
     // The existing user is already logged in.
     if ($user->uid == $uid) {
       drupal_set_message(t('You are logged in as %user. <a href="!user_edit">Change your password.</a>', array('%user' => $user->name, '!user_edit' => url("user/$user->uid/edit"))));
