Je crée un utilisateur par programme comme ceci:
$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);
J'ai un rôle avec l'ID de rôle égal à cinq; lorsque je crée l'utilisateur, dans la table "users_roles", il n'y a qu'une ligne avec la valeur 0 pour l'ID de rôle, mais si j'imprime l'objet utilisateur avec var_dump()
, les rôles sont créés.
Qu'est-ce que je fais mal?
array($role_id => 'anything')
Réponses:
Ce code a fonctionné pour moi:
la source
user_save
va s'en occuperuser_save()
le deuxième argument, il sera haché. Si vous le faitesuser_save($account)
sans l'$edit
argument puis la conversion md5 ne se produit pas. La réponse de @SMTF ci-dessous montre cela.Ceci est un exemple que j'ai trouvé sur un site.
la source
user_hash_password('bar');
a tortuser_save()
les mots de passe ne parviennent pas à être hachés avant d'être enregistrés (ce que je sais personnellement et d'autres utilisateurs du Web peuvent également le rencontrer de temps en temps). Je ne sais pas pourquoi (mais j'aimerais bien!). Dans ces cas, l'appeluser_hash_password()
semble nécessaire.user_hash_password()
d'être appelé manuellement. C'est parce que ça ne passe pas$edit
à lauser_save()
. Si le code comprend$edit = array('pass' => 'bar');
(ce que cette réponse ne contient pas), au lieu de le faire,$account->pass = user_hash...
vous pouvez le faireuser_save($account, $edit);
et voususer_save()
ferez le hachage à votre place.Pour créer par programme un utilisateur avec des rôles et des valeurs de champs personnalisés (par exemple, Prénom et Nom), vous pouvez utiliser le code suivant:
Voir cet article de blog et les commentaires pour plus de détails: http://codekarate.com/blog/create-user-account-drupal-7-programmatically
la source
Pour créer un utilisateur par programme à partir d'une adresse de messagerie, essayez ceci:
la source
Pour créer un utilisateur par programme:
la source