Files
chongming-plugins/auth/__init__.py
T
2026-07-23 17:45:44 +08:00

52 lines
1.5 KiB
Python

from pathlib import Path
from datetime import datetime
from chongming_worker import auto_bind_models
from chongming_worker.runtime import create_workers as _create_workers
from chongming_password import hash_password
from .router import *
auto_bind_models("auth")
async def create_workers(session, config, count=1, worker_manager=None):
from chongming_database import Database
from .global_var import set_global_var
from .models.auth import Users
from sqlalchemy import select
db_path = Path(config.get("data_dir", "./data")) / "auth.db"
db = Database(db_path)
await db.initialize()
# 初始化管理员
async with db.get_session() as sess:
select_stmt = select(Users) \
.where(Users.username == "admin") # type: ignore
result = await sess.execute(select_stmt)
user: Users | None = result.scalar_one_or_none()
if user is None:
user = Users(
username="admin",
hashed_password=hash_password("admin"),
email="admin@example.com",
created_at=datetime.now(),
updated_at=datetime.now(),
is_superuser=True
)
sess.add(user)
await sess.commit()
set_global_var("db", db)
return _create_workers(session, config, count, worker_manager)
async def cleanup(worker_item: str):
from .global_var import db
if db is not None:
await db.dispose()
print(f"{worker_item} 清理完毕")