Estoy creando un usuario programáticamente como este:
$newUser = array(
'name' => $mail,
'pass' => 'password', // note: do not md5 the password
'mail' => $mail,
'status' => 1,
'init' => $mail,
'roles' => array(5)
);
$user = user_save(null, $newUser);
Tengo un rol con el ID de rol igual a cinco; cuando creo el usuario, en la tabla "users_roles" solo hay una fila con el valor 0 para el ID de rol, pero si imprimo el objeto de usuario con var_dump(), parece que los roles están creados.
¿Qué estoy haciendo mal?

array($role_id => 'anything')Respuestas:
Este código funcionó para mí:
fuente
user_savese encargará de esouser_save()el segundo argumento, se convertirá en hash. Si no tieneuser_save($account)el$editargumento, la conversión de md5 no ocurre. La respuesta de @SMTF a continuación lo demuestra.Este es un ejemplo que encontré en un sitio.
fuente
user_hash_password('bar');está maluser_save()no se pueden generar contraseñas hash antes de guardarlas (en mi propia experiencia y veo que otras personas en la web también lo experimentan ocasionalmente). No sé por qué (¡pero me gustaría!). En estos casos, las llamadasuser_hash_password()parecen necesarias.user_hash_password()ser llamado de forma manual. Esto se debe a que no está pasando$edita lauser_save(). Si el código incluye$edit = array('pass' => 'bar');(que esta respuesta no incluye ), en lugar de hacerlo$account->pass = user_hash..., puede haceruser_save($account, $edit);yuser_save()hará el hashing por usted.Para crear un usuario mediante programación con roles y valores de campo personalizados (como, por ejemplo, Nombre y Apellido) puede usar el siguiente código:
Consulte esta publicación de blog y los comentarios para obtener más detalles: http://codekarate.com/blog/create-user-account-drupal-7-programmatic
fuente
Para crear un usuario mediante programación desde una dirección de correo electrónico, intente esto:
fuente
Para crear un usuario mediante programación:
fuente