Use Sina-only market K-lines and editable admin login synced to .env.

Market page uses Sina for quotes and bars with an auto-follow toggle and incremental chart updates while panning. Settings lets users change username and password, persisting to the database and .env.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-26 13:53:12 +08:00
parent 6905373401
commit 382a9a0e14
9 changed files with 324 additions and 75 deletions
+11 -9
View File
@@ -420,28 +420,30 @@
</details>
{% endcall %}
{% call settings_card('password', '修改密码', 'settings-compact-card') %}
{% call settings_card('password', '登录账号', 'settings-compact-card') %}
<form action="{{ url_for('settings') }}" method="post" class="settings-password-form">
<input type="hidden" name="action" value="password">
<div class="field field-full">
<label>当前账号</label>
<input type="text" value="{{ username }}" disabled>
<label>用户名</label>
<input name="admin_username" type="text" value="{{ username }}" required maxlength="64"
pattern="[A-Za-z0-9_.@-]+" autocomplete="username">
</div>
<div class="field">
<div class="field field-full">
<label>原密码</label>
<input name="old_password" type="password" required>
<input name="old_password" type="password" required autocomplete="current-password">
</div>
<div class="field">
<label>新密码</label>
<input name="new_password" type="password" required minlength="6" placeholder="至少 6 位">
<input name="new_password" type="password" minlength="6" placeholder="留空则不修改" autocomplete="new-password">
</div>
<div class="field field-full">
<div class="field">
<label>确认新密码</label>
<input name="new_password2" type="password" required minlength="6">
<input name="new_password2" type="password" minlength="6" placeholder="修改密码时填写" autocomplete="new-password">
</div>
<div class="field-full">
<button type="submit" class="btn-primary">修改密码</button>
<button type="submit" class="btn-primary">保存账号</button>
</div>
<p class="hint" style="margin:.45rem 0 0;font-size:.72rem">保存后写入数据库,并同步至 <code>.env</code><code>ADMIN_USERNAME</code> / <code>ADMIN_PASSWORD</code></p>
</form>
{% endcall %}
</div>