У меня есть миграция, которая создает файлы. Для владельцев файлов я пытаюсь найти существующего пользователя по электронной почте, и если не нахожу, я создаю его на лету. Проблема в том, что те пользователи, которых я создаю, должны быть отключены (я не хочу, чтобы они входили на сайт). Но если я отключу их и попытаюсь использовать их как владельца файла, я получу сообщение:
«На этот объект (пользователь: 187) нельзя ссылаться».
Я могу отключить проверку для этого файла миграции, но он отключится полностью, а не только для этой проверки пользователя.
Я попытался использовать переключатель учетных записей (от подписчика событий, реагируя на события pre_import и post_import), чтобы переключиться на пользователя 1 до начала миграции и вернуться обратно, когда она закончится, но не помогло.
Есть идеи, как ссылаться на отключенных пользователей во время миграции, но с включенной проверкой?
Обновлять:
Провел некоторое исследование, и эта проверка выполняется в
\Drupal\user\Plugin\EntityReferenceSelection\UserSelection::buildEntityQuery()
Есть код:
// Добавление проверки разрешений, к сожалению, недостаточно для пользователей: core
// требует, чтобы мы также знали о понятиях «заблокировано» и «активно».
if (!$this->currentUser->hasPermission('администрировать пользователей')) {
$запрос->условие('статус', 1);
}
И если я закомментирую эту строку, она не будет проверена, отключен ли пользователь или нет, и проверка завершится успешно.
Странно то, что даже я использую Account Switcher для переключения на пользователя 1, а внутри моего плагина процесса пользователь действительно равен 1, когда этот код выполняется, пользователь больше не 1, а тот, который я создал и назначил файлу (отключен), поэтому Должно быть, импорт также использует переключатель учетных записей?
Есть идеи, как это решить? Можно ли принудительно запустить миграцию от имени определенного пользователя (администратора)?