diff --git a/.env.example b/.env.example index 379eddd..3b78ea1 100644 --- a/.env.example +++ b/.env.example @@ -1,9 +1,13 @@ # 复制本文件为 .env 后按需修改(.env 勿提交到 Git) # 与 app.py 同目录;程序启动时自动加载。 -# 必填(长期运行):随机字符串,用于会话与 CSRF。可执行: openssl rand -hex 32 +# 必填(长期运行):随机字符串,用于会话与 CSRF。生成见下方「密钥」说明。 # NAV_SECRET_KEY= +# 仅当数据库里还没有任何用户时生效(首次启动):首个管理员账号 +# NAV_ADMIN_USERNAME=admin +# NAV_ADMIN_PASSWORD=请改成强密码 + # 数据库(默认 SQLite 文件在当前工作目录) # NAV_DATABASE_URL=sqlite:///nav_local.db diff --git a/app.py b/app.py index d1e9431..7fa41d7 100644 --- a/app.py +++ b/app.py @@ -254,12 +254,18 @@ def _group_choices(): def _ensure_default_user() -> None: if User.query.count() > 0: return - u = User(username="admin") - u.set_password("admin123") + username = (os.environ.get("NAV_ADMIN_USERNAME") or "admin").strip() or "admin" + password = os.environ.get("NAV_ADMIN_PASSWORD") or "admin123" + u = User(username=username) + u.set_password(password) db.session.add(u) db.session.add(ServiceGroup(name="默认分组", sort_order=0)) db.session.commit() - print("[nav] 首次运行:默认账号 admin 密码 admin123(仅内网使用,建议自行改库或删用户后重建)") + print( + f"[nav] 首次运行:已创建管理员「{username}」" + "(来自 NAV_ADMIN_USERNAME / NAV_ADMIN_PASSWORD,未设置则为 admin / admin123)。" + "生产环境请尽快改为强密码。" + ) app = create_app()