/
zemars
/
it-dashboard
Обзор
Документация
Войти
/
zemars
/
it-dashboard
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
backend/app/init_db.py
63 строки
2 KB
Дмитрий
fix(docs): актуализировать risk_log и docstring init_db
26 май 2026, 22:07
26 май 2026, 22:07
9981d43
Код
Авторство
О чём код?
# Автор: Никита Синадский — создание тестовых пользователей при старте # Запускается из Dockerfile после alembic upgrade head. # Идемпотентен: если пользователь уже есть, ничего не делает. import sys from sqlalchemy import select from .config import get_settings from .database import SessionLocal from .models.user import User from .services.auth_service import hash_password def ensure_user(db, username: str, password: str, role: str, full_name: str) -> bool: """Создаёт пользователя, если такого ещё нет. Возвращает True если создан.""" existing = db.scalar(select(User).where(User.username == username)) if existing is not None: return False user = User( username=username, password_hash=hash_password(password), role=role, full_name=full_name, ) db.add(user) return True def init_default_users() -> None: """Создаёт analyst/analyst и operator/operator (если их нет).""" settings = get_settings() with SessionLocal() as db: created_analyst = ensure_user( db, settings.default_analyst_username, settings.default_analyst_password, "analyst", "Аналитик (демо)", ) created_operator = ensure_user( db, settings.default_operator_username, settings.default_operator_password, "operator", "Оператор (демо)", ) db.commit() if created_analyst: print(f"[init_db] создан пользователь {settings.default_analyst_username} (analyst)") if created_operator: print(f"[init_db] создан пользователь {settings.default_operator_username} (operator)") if not (created_analyst or created_operator): print("[init_db] тестовые пользователи уже существуют — пропускаю") if __name__ == "__main__": try: init_default_users() except Exception as e: print(f"[init_db] ОШИБКА: {e}", file=sys.stderr) sys.exit(1)