add: super admin role

This commit is contained in:
2025-07-15 22:51:16 +05:00
parent 9ab99aa7e4
commit eb7227bdc2
6 changed files with 35 additions and 10 deletions

View File

@ -3,9 +3,9 @@ from models import Admin, Base
from database import SessionLocal, engine
import argparse
def create_initial_admin(username: str, password: str):
def create_initial_admin(username: str, password: str, super_admin: bool = True):
"""
Создает первого администратора в системе
Создает первого администратора в системе (по умолчанию как главного админа)
"""
Base.metadata.create_all(bind=engine)
db = SessionLocal()
@ -18,18 +18,24 @@ def create_initial_admin(username: str, password: str):
# Создаем нового админа
hashed_password = get_password_hash(password)
db_admin = Admin(username=username, hashed_password=hashed_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)
print(f"Администратор {username} успешно создан!")
admin_type = "главный администратор" if super_admin else "администратор"
print(f"{admin_type.capitalize()} {username} успешно создан!")
db.close()
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Создание первого администратора")
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)
create_initial_admin(args.username, args.password, args.super)