diff --git a/steward/auth/routes.py b/steward/auth/routes.py index e646c6b..f1cd510 100644 --- a/steward/auth/routes.py +++ b/steward/auth/routes.py @@ -184,7 +184,10 @@ async def setup(): from quart import current_app if await get_user_count(current_app) > 0: return redirect(url_for("auth.login")) - return await render_template("auth/setup.html") + # Pre-fill the public URL with however the operator reached this page — the + # common case is correct, and it's what agent installs / share links use. + return await render_template( + "auth/setup.html", default_url=request.host_url.rstrip("/")) @auth_bp.post("/setup") @@ -201,9 +204,16 @@ async def setup_post(): return await render_template("auth/setup.html", error="All fields required"), 400 pw_hash = bcrypt.hashpw(password, bcrypt.gensalt()).decode() user = User(username=username, email=email, password_hash=pw_hash, role=UserRole.admin) + steward_url = (form.get("public_base_url", "") or "").strip().rstrip("/") async with current_app.db_sessionmaker() as db: async with db.begin(): db.add(user) + if steward_url: + from steward.core.settings import set_setting + await set_setting(db, "general.public_base_url", steward_url) + if steward_url: + # Apply immediately so agent installs / share links use it without a restart. + current_app.config["PUBLIC_BASE_URL"] = steward_url login_user(user) await log_audit(current_app, user.id, user.username, "auth.setup", detail={"username": username}) diff --git a/steward/templates/auth/setup.html b/steward/templates/auth/setup.html index 48a076a..00c3db7 100644 --- a/steward/templates/auth/setup.html +++ b/steward/templates/auth/setup.html @@ -18,6 +18,17 @@ +
+ + + + Used for agent installs, share links, and alert links. Pre-filled from your current + address — change it if hosts reach Steward by a different name. Editable later in Settings → General. + +