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_save
se encargará de esouser_save()
el segundo argumento, se convertirá en hash. Si no tieneuser_save($account)
el$edit
argumento, 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$edit
a 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