Создание root-пользователя
Команда create_root создает пользователя с корневыми правами в локальной базе. Она рассчитана на standalone-сценарий и опирается на уже существующий сервисный эктор и системные группы.
Команда
uv run manage.py create_root
Используйте команду после create_service, когда сервис должен администрироваться локально. Команда не поднимает пользователя из воздуха: ей нужны и таблицы, и сервисные ключи, и группа по умолчанию.
По умолчанию: Команда запускается в базовом режиме создания root-пользователя и запрашивает недостающие значения при запуске.
Параметры
| Параметр | Описание |
|---|---|
--first_name, -fn |
Имя пользователя. При отсутствии будет запрошено интерактивно. |
--last_name, -ln |
Фамилия пользователя. При отсутствии будет запрошена интерактивно. |
--email, -e |
Email root-пользователя. Адрес проходит валидацию через email_validator и должен быть уникальным в таблице actor. |
--password, -p |
Пароль пользователя. Если флаг не передан, команда спросит пароль дважды через getpass. |
Дополнительные примеры запуска
Полностью неинтерактивный запуск
uv run manage.py create_root \
--first_name "Root" \
--last_name "Admin" \
--email "[email protected]" \
--password "change-me"
Подходит для автоматизации и сценариев, где параметры передаются сразу при запуске команды.
Как работает
- Проверяет наличие таблицы
actor, затем валидирует email и убеждается, что такого пользователя еще нет. - Если пароль не передан, запрашивает его дважды и сравнивает введенные значения.
- Получает UUID группы по умолчанию из таблицы
actor, хеширует пароль и генерирует ключевую пару для нового пользователя. - Подписывает связку
root_uuid + public_keyсервисным приватным ключом и вставляет новую запись типаclassic_userв базу.
Что важно учесть
- Команда ожидает, что в базе уже существует группа
DEFAULT. Обычно она появляется послеcreate_serviceв standalone-режиме. - Для подписи root-пользователя должен быть настроен
SERVICE_PRIVATE_KEYв конфигурации сервиса. - Если нужной группы нет, команда падает не на этапе валидации CLI, а уже во время чтения из базы.