02.04.2026 | Lothar Ferreira Neumann
switch_roles.install
<?php
use Drupal\user\RoleInterface;
/**
* Remove the old roles and replace them with the new ones.
*/
function MY_MODULE_update_9041(): void {
$em = \Drupal::entityTypeManager();
$user_storage = $em->getStorage('user');
// Ensure the new role exists. If not, create it first.
$role_storage = $em->getStorage('user_role');
if ($role_storage->load('new_role') === NULL) {
/** @var \Drupal\user\RoleInterface $role */
$role = $role_storage->create([
'id' => 'new_role',
'label' => 'New role',
]);
$role->save();
}
$uids = \Drupal::entityQuery('user')
->accessCheck(FALSE)
->execute();
if (empty($uids)) {
return;
}
/** @var \Drupal\user\UserInterface[] $users */
$users = $user_storage->loadMultiple($uids);
foreach ($users as $user) {
if ($user->hasRole('old_role')) {
$user->addRole('new_role');
$user->removeRole('old_role');
}
$user->save();
}
}