feat: 管理员密码支持从环境变量同步

修改环境变量 ADMIN_PASSWORD 后重启容器即可生效,无需删除数据库

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
lzh
2026-01-22 16:41:40 +08:00
parent 93255e09a4
commit b2a590cbdf

View File

@@ -23,7 +23,7 @@ db.migrate_auth_fields() # 迁移认证字段
def ensure_admin_user(): def ensure_admin_user():
"""确保管理员账户存在(从环境变量创建)""" """确保管理员账户存在,密码与环境变量同步"""
admin_username = os.environ.get("ADMIN_USERNAME") admin_username = os.environ.get("ADMIN_USERNAME")
admin_password = os.environ.get("ADMIN_PASSWORD") admin_password = os.environ.get("ADMIN_PASSWORD")
@@ -32,17 +32,22 @@ def ensure_admin_user():
# 检查是否已存在该用户名 # 检查是否已存在该用户名
existing = db.get_user_by_name(admin_username) existing = db.get_user_by_name(admin_username)
new_password_hash = hash_password(admin_password)
if existing: if existing:
# 用户已存在,确保是管理员 # 用户已存在,同步密码(环境变量优先)
if not existing.is_admin: if not existing.is_admin:
existing.is_admin = True existing.is_admin = True
if existing.password_hash != new_password_hash:
existing.password_hash = new_password_hash
db.update_user(existing) db.update_user(existing)
print(f"[Vitals] 管理员密码已从环境变量同步")
return return
# 创建管理员账户 # 创建管理员账户
admin_user = User( admin_user = User(
name=admin_username, name=admin_username,
password_hash=hash_password(admin_password), password_hash=new_password_hash,
is_admin=True, is_admin=True,
is_active=True, is_active=True,
is_disabled=False, is_disabled=False,