Files
vector/backend/seed_users.py
T
2026-06-06 18:31:55 +00:00

86 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Seed script для создания тестовых пользователей
Создаёт трёх пользователей с разными ролями: operator, field, admin
"""
import sys
sys.path.append('/app')
from sqlalchemy.orm import Session
from passlib.context import CryptContext
from database import SessionLocal
from models import User
import uuid
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
def get_password_hash(password: str) -> str:
# Обрезаем пароль до 72 байт для bcrypt
return pwd_context.hash(password[:72])
def create_test_users():
"""Создание тестовых пользователей"""
db = SessionLocal()
try:
# Проверяем, есть ли уже пользователи
existing_users = db.query(User).count()
if existing_users > 0:
print(f"В базе уже есть {existing_users} пользователей. Пропускаем seed.")
return
test_users = [
{
"username": "operator",
"email": "operator@mchs.by",
"password": "pass123",
"full_name": "Оператор ЦОУ",
"role": "operator"
},
{
"username": "field",
"email": "field@mchs.by",
"password": "pass123",
"full_name": "Полевой работник",
"role": "field"
},
{
"username": "admin",
"email": "admin@mchs.by",
"password": "pass123",
"full_name": "Администратор",
"role": "admin"
}
]
print("Создание тестовых пользователей...")
for user_data in test_users:
password = user_data.pop("password")
hashed_password = get_password_hash(password)
db_user = User(
id=uuid.uuid4(),
hashed_password=hashed_password,
is_active=True,
**user_data
)
db.add(db_user)
print(f" + {user_data['username']} ({user_data['role']})")
db.commit()
print("\nТестовые пользователи созданы!")
print("\nДля входа используйте пароль: pass123")
print(" operator / pass123")
print(" field / pass123")
print(" admin / pass123")
except Exception as e:
print(f"Ошибка: {e}")
db.rollback()
raise
finally:
db.close()
if __name__ == "__main__":
create_test_users()