Рейтинг:0

Как удалить роль пользователя с помощью обновления хука?

флаг id

Я хотел бы удалить роль пользователя через обновление хука в Drupal 9.

Я считаю, что мне нужно будет сделать что-то вроде приведенного ниже, но неясно, какой еще код может понадобиться.

$user->removeRole('администратор');
$пользователь->сохранить();
sonfd avatar
флаг in
Вы пытаетесь удалить роль определенного пользователя? Или удалить роль, чтобы она больше не существовала в системе и не могла быть назначена ни одному пользователю?
флаг id
Сначала удалите роль для всех пользователей, которым назначена роль. Затем удалите роль, чтобы ее больше не существовало в системе и ее нельзя было назначить ни одному пользователю.
leymannx avatar
флаг ne
Найдите хук пакетного обновления drupal.Потому что, когда вы хотите обработать много пользователей, вы можете захотеть предотвратить тайм-ауты при запуске вашего хука обновления.
Рейтинг:0
флаг de

Сначала загрузите всех ваших пользователей с ролью, которую вы хотите удалить:

$usersHavingRole = \Drupal::entityTypeManager()->getStorage('user')->loadByProperties(['roles' => 'my_role']);

Затем для каждого пользователя удалите роль (это код, который вы упомянули):

foreach($usersHavingRole as $user) {
  $user->removeRole('my_role');
  $пользователь->сохранить();
}

И, наконец, удалите роль:

$role = \Drupal\user\Entity\Role::load('my_role');
если (!пусто($роль)) {
  $роль->удалить();
}
leymannx avatar
флаг ne
Я предполагаю, что OP больше ищет фактический код хука обновления, реализующий в лучшем случае пакетный процесс.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.