Apr
29
2010
0

Crear usuarios Drupal 6.x dinámicamente

La siguiente función para generar usuarios "on the fly" puede servir, por ejemplo, para crear usuarios en Drupal 6.x a partir de datos dados en una URL, aunque tiene muchos posibles usos. Yo lo utilizo para la creación de usuarios desde procedencias externas. El código se puede extender de modo que una de esas variables indique la procedencia y se almacene en el perfil del usuario, por ejemplo, para calcular distintos descuentos o permisos. Visto en Jayboodhun

  1. <?php
  2. /**
  3.  * Date dd/mm/yyyy
  4.  * Creates a user with profile values.
  5.  *
  6.  * @param $data
  7.  * $_POST data for example.
  8.  *
  9.  * @return
  10.  * $user Object.
  11.  */
  12. function my_module_create_user($data) {
  13. // Drupal User module function that generates MD5 hash password
  14. $pass = user_password();
  15. $newuser = array(
  16. 'name' => $data['name'],
  17. 'mail' => $data['mail'],
  18. 'status' => 1, // Sets user as Active
  19. 'pass' => $pass
  20. );
  21. $auto_user = user_save('', $newuser);
  22. $rid = 4; // Assign Role ID
  23. $uid = $auto_user->uid;
  24. db_query('INSERT INTO {users_roles} (uid, rid) VALUES (%d, %d)', $uid, $rid);
  25. // Populates profile values
  26. $profile = array(
  27. 'firstname' => $data['firstname'],
  28. 'lastname' => $data['lastname'],
  29. 'company' => $data['company'],
  30. 'address' => $data['address'],
  31. 'city' => $data['city'],
  32. 'state' => $data['state'],
  33. 'country' => $data['country'],
  34. 'phone' => $data['phone'],
  35. );
  36. // Adds details under Personal Information Category set in Profile
  37. profile_save_profile($profile, $auto_user, 'Personal Information');
  38. // Load the new user Object
  39. $account = user_load(array('uid' => $auto_user->uid, 'status' => 1));
  40. global $user;
  41. $user = $account;
  42. drupal_set_message(t('You have been authenticated'));
  43. db_query("UPDATE {users} SET login = %d WHERE uid = %d", time(), $user->uid);
  44. sess_regenerate();
  45. // Finally send an Email
  46. /*
  47. * Mail templates available:
  48. * register_no_approval_required
  49. * register_admin_created
  50. * register_pending_approval - Need to set Status above as 0 if this option is required
  51. */
  52. drupal_mail('user', 'register_no_approval_required', variable_get('site_mail', ini_get('sendmail_from')), language_default(), $params);
  53. // Set the redirection to where you want
  54. drupal_goto('home');
  55. }
  56. ?>
No me interesaNo está malBienÚtilMuy bien, muy útil (3 votes, average: 3.67 out of 5)
Loading ... Loading ...

Creative Commons License
Webcidentes by Alejandro Garcia is licensed under a Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 España License.
Based on a work at www.cabezabomba.com.