? usernode_assign_uid.patch
Index: usernode.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/usernode/usernode.module,v
retrieving revision 1.12.2.9
diff -u -r1.12.2.9 usernode.module
--- usernode.module	28 Jan 2007 23:53:21 -0000	1.12.2.9
+++ usernode.module	2 Feb 2007 01:06:13 -0000
@@ -150,8 +150,7 @@
 function usernode_user($op, &$edit, &$user, $category = NULL) {
   switch ($op) {
     case 'insert':
-      $account = (object)$edit;
-      return usernode_create_node($account);
+      return usernode_create_node($user);
     case 'update':
        return isset($edit['status']) ? usernode_update_node($user, $edit) : '';
     case 'delete':
@@ -215,22 +214,31 @@
 /**
  * Create an associated node. Called by hook_user().
  */
-function usernode_create_node($user) {
+function usernode_create_node($account) {
+
   $node = array(
     'type' => USERNODE_CONTENT_TYPE,
-    'title' => check_plain($user->name)
+    'title' => check_plain($account->name),
   );
 
-  $values = array();
-  $values['name'] = $user->name;
-  $values['title'] = check_plain($user->name);
+  $values = array(
+    'name' => $account->name,
+    'title' => check_plain($account->name),
+  );
 
-  // Workaround to disable drupal message "Your usernode has been created"
+  // workaround to disable drupal message "Your usernode has been created"
   $messages = drupal_get_messages();
+  // workaround to get permissions for creating the usernode in the first place
+  global $user;
+  $current_user = $user;
+  $user = $account;
+
   // create the usernode
   drupal_execute(USERNODE_CONTENT_TYPE .'_node_form', $values, $node);
-  // write back the old messages
+
+  // write back the old messages and user object
   $_SESSION['messages'] = $messages;
+  $user = $current_user;
 }
 
 /**
