Estou criando um usuário programaticamente assim:
$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);
Eu tenho uma função com o ID da função igual a cinco; Quando eu crio o usuário, na tabela "users_roles" há apenas uma linha com o valor 0 para o ID da função, mas se eu imprimir o objeto de usuário var_dump()
, parece que as funções foram criadas.
O que estou fazendo errado?
array($role_id => 'anything')
Respostas:
Este código funcionou para mim:
fonte
user_save
vai cuidar dissouser_save()
segundo argumento, ela será hash. Se você ficaruser_save($account)
sem o$edit
argumento, a conversão md5 não acontecerá. A resposta de @SMTF abaixo demonstra isso.Este é um exemplo que encontrei em um site.
fonte
user_hash_password('bar');
está erradouser_save()
falha ao hash de senhas antes de salvá-las (na minha própria experiência e vejo outras pessoas na web também experimentando ocasionalmente). Não sei por que (mas eu gostaria!). Nesses casos, a chamadauser_hash_password()
parece necessária.user_hash_password()
a ser chamado manualmente. Isso ocorre porque não está passando$edit
para ouser_save()
. Se o código incluir$edit = array('pass' => 'bar');
(o que esta resposta não inclui ), em vez de fazer,$account->pass = user_hash...
você pode fazeruser_save($account, $edit);
euser_save()
fará o hash para você.Para criar programaticamente um usuário com funções e valores de campos personalizados (como, por exemplo, Nome e Sobrenome), você pode usar o seguinte código:
Consulte esta postagem do blog e os comentários para obter mais detalhes: http://codekarate.com/blog/create-user-account-drupal-7-programmatically
fonte
Para criar um usuário programaticamente a partir de um endereço de email, tente o seguinte:
fonte
Para criar um usuário programaticamente:
fonte