Программно создайте пользователя и присвойте роль

Я программно создаю пользователя со следующим кодом.

$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);

У меня есть роль с ролевым идентификатором, равным 5; когда я создаю пользователя, в таблице "users_roles" существует только строка со значением 0 для ролевого идентификатора, но если я печатаю пользовательский объект с var_dump(), похоже, что роли создаются.

Что я делаю неправильно?

46
06.01.2020, 17:19
2 ответа

Этот код работал на меня:

$new_user = array(
  'name' => $name,
  'pass' => $sifra, // note: do not md5 the password
  'mail' => $email,
  'status' => 1,
  'init' => $email,
  'roles' => array(
    DRUPAL_AUTHENTICATED_RID => 'authenticated user',
    3 => 'custom role',
  ),
);

// The first parameter is sent blank so a new user is created.
user_save('', $new_user);
46
24.01.2020, 22:43

Это - пример, который я нашел на сайте.

$account = new stdClass;
$account->is_new = TRUE;
$account->name = 'foo';
$account->pass = user_hash_password('bar');
$account->mail = 'foo@example.com';
$account->init = 'foo@example.com';
$account->status = TRUE;
$account->roles = array(DRUPAL_AUTHENTICATED_RID => TRUE);
$account->timezone = variable_get('date_default_timezone', '');
user_save($account);
13
24.01.2020, 22:43

Теги

Похожие вопросы