42 lines
1.8 KiB
Python
42 lines
1.8 KiB
Python
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)
|