feat: 管理员密码支持从环境变量同步
修改环境变量 ADMIN_PASSWORD 后重启容器即可生效,无需删除数据库 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user