@@ -81,7 +81,8 @@
|
||||
- `POST /api/v1/chat/sessions/{id}/messages`(需要 `chat.use`)
|
||||
|
||||
初始化管理员(可选):
|
||||
- 在 `.env` 设置 `INITIAL_ADMIN_EMAIL`、`INITIAL_ADMIN_USERNAME`、`INITIAL_ADMIN_PASSWORD`
|
||||
- 在 `.env` 设置 `INITIAL_ADMIN_EMAIL`、`INITIAL_ADMIN_USER_ID`、`INITIAL_ADMIN_USERNAME`、`INITIAL_ADMIN_PASSWORD`
|
||||
- 默认值:`INITIAL_ADMIN_USER_ID=admin`、`INITIAL_ADMIN_USERNAME=管理员`
|
||||
- API 启动时会自动创建并赋予 `admin` 角色
|
||||
|
||||
## Docker Compose 部署
|
||||
|
||||
@@ -70,7 +70,8 @@ class Settings(BaseSettings):
|
||||
atp_engine_max_timeout_seconds: int = 3600
|
||||
|
||||
initial_admin_email: str | None = None
|
||||
initial_admin_username: str = "admin"
|
||||
initial_admin_user_id: str = "admin"
|
||||
initial_admin_username: str = "管理员"
|
||||
initial_admin_password: str | None = None
|
||||
|
||||
model_config = SettingsConfigDict(
|
||||
|
||||
@@ -487,10 +487,15 @@ def _seed_initial_admin(db: Session) -> None:
|
||||
if not admin_role:
|
||||
return
|
||||
|
||||
admin_user_id = settings.initial_admin_user_id.strip()
|
||||
if not admin_user_id:
|
||||
return
|
||||
|
||||
admin_email = settings.initial_admin_email.lower()
|
||||
user = db.scalar(select(User).where(User.email == admin_email))
|
||||
user = db.scalar(select(User).where((User.id == admin_user_id) | (User.email == admin_email)))
|
||||
if not user:
|
||||
user = User(
|
||||
id=admin_user_id,
|
||||
email=admin_email,
|
||||
username=settings.initial_admin_username,
|
||||
password_hash=hash_password(settings.initial_admin_password),
|
||||
@@ -509,7 +514,9 @@ def _seed_legacy_tower_models_if_empty(db: Session) -> None:
|
||||
if existing_count > 0:
|
||||
return
|
||||
|
||||
actor = db.scalar(select(User).where(User.username == settings.initial_admin_username))
|
||||
actor = db.scalar(select(User).where(User.id == settings.initial_admin_user_id))
|
||||
if actor is None:
|
||||
actor = db.scalar(select(User).where(User.username == settings.initial_admin_username))
|
||||
if actor is None:
|
||||
actor = db.scalar(select(User).order_by(User.created_at.asc()))
|
||||
if actor is None:
|
||||
|
||||
Reference in New Issue
Block a user