from password_utils import get_password_hash from models import Admin, Base from database import SessionLocal, engine import argparse def create_initial_admin(username: str, password: str, super_admin: bool = True): """ Создает первого администратора в системе (по умолчанию как главного админа) """ Base.metadata.create_all(bind=engine) db = SessionLocal() # Проверяем, существует ли уже админ с таким именем existing_admin = db.query(Admin).filter(Admin.username == username).first() if existing_admin: print(f"Администратор с именем {username} уже существует!") return # Создаем нового админа hashed_password = get_password_hash(password) db_admin = Admin( username=username, hashed_password=hashed_password, is_super_admin=super_admin ) db.add(db_admin) db.commit() db.refresh(db_admin) admin_type = "главный администратор" if super_admin else "администратор" print(f"{admin_type.capitalize()} {username} успешно создан!") db.close() if __name__ == "__main__": parser = argparse.ArgumentParser(description="Создание администратора") parser.add_argument("--username", required=True, help="Имя пользователя администратора") parser.add_argument("--password", required=True, help="Пароль администратора") parser.add_argument("--super", action="store_true", help="Создать как главного администратора") args = parser.parse_args() create_initial_admin(args.username, args.password, args.super)