feat(web-auth): 支持六位密码与环境变量托管

- 密码策略统一为至少六个可见字符,覆盖初始化与设置中心改密
- 支持 GONAVI_WEB_PASSWORD 启动同步并保留既有 2FA 与会话配置
- 设置中心识别环境托管状态并禁用临时改密
- Compose、env 示例及双语文档补充密码配置和容器重建说明
- 增加认证持久化、环境覆盖、前端状态与 Docker 登录回归校验
This commit is contained in:
Syngnat
2026-07-10 10:34:03 +08:00
parent 0a9aec5929
commit 8d186fc066
21 changed files with 417 additions and 62 deletions

View File

@@ -2683,8 +2683,9 @@
"app.settings.web_auth.password.current_placeholder": "Aktuelles Administratorpasswort eingeben",
"app.settings.web_auth.password.description": "Beim Ändern des Passworts wird die aktuelle Web-Sitzung rotiert und andere aktive Sitzungen werden abgemeldet.",
"app.settings.web_auth.password.description_with_code": "Beim Ändern des Passworts wird die aktuelle Web-Sitzung rotiert und andere aktive Sitzungen werden abgemeldet. Wenn 2FA aktiviert ist, geben Sie zusätzlich den aktuellen Code oder einen Wiederherstellungscode ein.",
"app.settings.web_auth.password.managed_by_environment": "Das Administratorpasswort wird über GONAVI_WEB_PASSWORD verwaltet. Erstellen Sie bei Container-Bereitstellungen den Container neu, andernfalls starten Sie den Webserver neu.",
"app.settings.web_auth.password.new_label": "Neues Administratorpasswort",
"app.settings.web_auth.password.new_placeholder": "Mindestens 10 Zeichen",
"app.settings.web_auth.password.new_placeholder": "Mindestens 6 Zeichen",
"app.settings.web_auth.password.save_failed": "Administratorpasswort konnte nicht aktualisiert werden",
"app.settings.web_auth.password.save_success": "Administratorpasswort wurde aktualisiert",
"app.settings.web_auth.password.submit": "Neues Passwort speichern",
@@ -7942,6 +7943,7 @@
"web_auth.error.method_not_allowed": "Methode nicht erlaubt",
"web_auth.error.password_confirmation_mismatch": "Die Passwortbestätigung stimmt nicht überein",
"web_auth.error.password_min_length": "Das Passwort muss mindestens {{count}} Zeichen lang sein",
"web_auth.error.password_managed_by_environment": "Das Administratorpasswort wird über eine Umgebungsvariable verwaltet",
"web_auth.error.password_required": "Admin-Passwort ist erforderlich",
"web_auth.error.retry_after_seconds": ". Bitte in {{seconds}} Sekunden erneut versuchen",
"web_auth.error.setup_info_expired": "Die Initialisierungsdaten sind abgelaufen. Laden Sie die Seite neu und versuchen Sie es erneut.",
@@ -7980,7 +7982,7 @@
"web_auth.page.setup.next": "Weiter",
"web_auth.page.setup.otpauth_label": "otpauth-URI",
"web_auth.page.setup.password_label": "Admin-Passwort",
"web_auth.page.setup.password_placeholder": "Mindestens 10 Zeichen",
"web_auth.page.setup.password_placeholder": "Mindestens 6 Zeichen",
"web_auth.page.setup.qr_alt": "Google-Authenticator-QR-Code",
"web_auth.page.setup.recovery_intro": "Wiederherstellungscodes werden nur dieses eine Mal angezeigt. Bitte offline speichern:",
"web_auth.page.setup.remember_label": "Anmeldung merken (Tage)",

View File

@@ -2683,8 +2683,9 @@
"app.settings.web_auth.password.current_placeholder": "Enter the current admin password",
"app.settings.web_auth.password.description": "Changing the password rotates the current web session and signs out other active sessions.",
"app.settings.web_auth.password.description_with_code": "Changing the password rotates the current web session and signs out other active sessions. When 2FA is enabled, enter the current verification code or a recovery code too.",
"app.settings.web_auth.password.managed_by_environment": "The admin password is managed by GONAVI_WEB_PASSWORD. Recreate the container for container deployments, or restart the Web server otherwise.",
"app.settings.web_auth.password.new_label": "New admin password",
"app.settings.web_auth.password.new_placeholder": "At least 10 characters",
"app.settings.web_auth.password.new_placeholder": "At least 6 characters",
"app.settings.web_auth.password.save_failed": "Failed to update the admin password",
"app.settings.web_auth.password.save_success": "Admin password updated",
"app.settings.web_auth.password.submit": "Save New Password",
@@ -7942,6 +7943,7 @@
"web_auth.error.method_not_allowed": "Method not allowed",
"web_auth.error.password_confirmation_mismatch": "Password confirmation does not match",
"web_auth.error.password_min_length": "Password must be at least {{count}} characters",
"web_auth.error.password_managed_by_environment": "The admin password is managed by an environment variable",
"web_auth.error.password_required": "Admin password is required",
"web_auth.error.retry_after_seconds": ". Try again in {{seconds}} seconds",
"web_auth.error.setup_info_expired": "Setup information expired. Refresh the page and try again.",
@@ -7980,7 +7982,7 @@
"web_auth.page.setup.next": "Next",
"web_auth.page.setup.otpauth_label": "otpauth URI",
"web_auth.page.setup.password_label": "Admin password",
"web_auth.page.setup.password_placeholder": "At least 10 characters",
"web_auth.page.setup.password_placeholder": "At least 6 characters",
"web_auth.page.setup.qr_alt": "Google Authenticator QR code",
"web_auth.page.setup.recovery_intro": "Recovery codes are shown only once. Save them offline:",
"web_auth.page.setup.remember_label": "Remember sign-in (days)",

View File

@@ -2683,8 +2683,9 @@
"app.settings.web_auth.password.current_placeholder": "現在の管理者パスワードを入力",
"app.settings.web_auth.password.description": "パスワードを変更すると現在の Web セッションが更新され、ほかのログイン中セッションは無効になります。",
"app.settings.web_auth.password.description_with_code": "パスワードを変更すると現在の Web セッションが更新され、ほかのログイン中セッションは無効になります。2FA が有効な場合は、現在の認証コードまたはリカバリーコードも入力してください。",
"app.settings.web_auth.password.managed_by_environment": "管理者パスワードは GONAVI_WEB_PASSWORD で管理されています。コンテナ環境ではコンテナを再作成し、それ以外では Web サーバーを再起動してください。",
"app.settings.web_auth.password.new_label": "新しい管理者パスワード",
"app.settings.web_auth.password.new_placeholder": "10 文字以上",
"app.settings.web_auth.password.new_placeholder": "6 文字以上",
"app.settings.web_auth.password.save_failed": "管理者パスワードの更新に失敗しました",
"app.settings.web_auth.password.save_success": "管理者パスワードを更新しました",
"app.settings.web_auth.password.submit": "新しいパスワードを保存",
@@ -7942,6 +7943,7 @@
"web_auth.error.method_not_allowed": "許可されていないメソッドです",
"web_auth.error.password_confirmation_mismatch": "確認用パスワードが一致しません",
"web_auth.error.password_min_length": "パスワードは {{count}} 文字以上必要です",
"web_auth.error.password_managed_by_environment": "管理者パスワードは環境変数で管理されています",
"web_auth.error.password_required": "管理者パスワードを入力してください",
"web_auth.error.retry_after_seconds": "。{{seconds}} 秒後に再試行してください",
"web_auth.error.setup_info_expired": "初期化情報の有効期限が切れました。ページを再読み込みして再試行してください。",
@@ -7980,7 +7982,7 @@
"web_auth.page.setup.next": "次へ",
"web_auth.page.setup.otpauth_label": "otpauth URI",
"web_auth.page.setup.password_label": "管理者パスワード",
"web_auth.page.setup.password_placeholder": "10 文字以上",
"web_auth.page.setup.password_placeholder": "6 文字以上",
"web_auth.page.setup.qr_alt": "Google Authenticator QR コード",
"web_auth.page.setup.recovery_intro": "リカバリーコードは今回のみ表示されます。オフラインで保存してください:",
"web_auth.page.setup.remember_label": "ログインを記憶(日)",

View File

@@ -2683,8 +2683,9 @@
"app.settings.web_auth.password.current_placeholder": "Введите текущий пароль администратора",
"app.settings.web_auth.password.description": "После смены пароля текущая веб-сессия будет обновлена, а остальные активные сессии будут завершены.",
"app.settings.web_auth.password.description_with_code": "После смены пароля текущая веб-сессия будет обновлена, а остальные активные сессии будут завершены. Если включена 2FA, также введите текущий код или код восстановления.",
"app.settings.web_auth.password.managed_by_environment": "Пароль администратора управляется через GONAVI_WEB_PASSWORD. Для контейнерного развёртывания пересоздайте контейнер, иначе перезапустите веб-сервер.",
"app.settings.web_auth.password.new_label": "Новый пароль администратора",
"app.settings.web_auth.password.new_placeholder": "Не менее 10 символов",
"app.settings.web_auth.password.new_placeholder": "Не менее 6 символов",
"app.settings.web_auth.password.save_failed": "Не удалось обновить пароль администратора",
"app.settings.web_auth.password.save_success": "Пароль администратора обновлен",
"app.settings.web_auth.password.submit": "Сохранить новый пароль",
@@ -7942,6 +7943,7 @@
"web_auth.error.method_not_allowed": "Метод не поддерживается",
"web_auth.error.password_confirmation_mismatch": "Подтверждение пароля не совпадает",
"web_auth.error.password_min_length": "Пароль должен содержать не менее {{count}} символов",
"web_auth.error.password_managed_by_environment": "Пароль администратора управляется переменной окружения",
"web_auth.error.password_required": "Требуется пароль администратора",
"web_auth.error.retry_after_seconds": ". Повторите попытку через {{seconds}} с",
"web_auth.error.setup_info_expired": "Данные инициализации устарели. Обновите страницу и попробуйте снова.",
@@ -7980,7 +7982,7 @@
"web_auth.page.setup.next": "Далее",
"web_auth.page.setup.otpauth_label": "otpauth URI",
"web_auth.page.setup.password_label": "Пароль администратора",
"web_auth.page.setup.password_placeholder": "Не менее 10 символов",
"web_auth.page.setup.password_placeholder": "Не менее 6 символов",
"web_auth.page.setup.qr_alt": "QR-код Google Authenticator",
"web_auth.page.setup.recovery_intro": "Коды восстановления показываются только один раз. Сохраните их офлайн:",
"web_auth.page.setup.remember_label": "Запомнить вход (дни)",

View File

@@ -2683,8 +2683,9 @@
"app.settings.web_auth.password.current_placeholder": "输入当前管理员密码",
"app.settings.web_auth.password.description": "修改密码后会轮换当前 Web 会话,其他已登录会话会失效。",
"app.settings.web_auth.password.description_with_code": "修改密码后会轮换当前 Web 会话,其他已登录会话会失效。已启用 2FA 时,还需要输入当前验证码或恢复码。",
"app.settings.web_auth.password.managed_by_environment": "管理员密码由 GONAVI_WEB_PASSWORD 管理。容器部署请重新创建容器,其他部署请重启 Web 服务。",
"app.settings.web_auth.password.new_label": "新管理员密码",
"app.settings.web_auth.password.new_placeholder": "至少 10 位",
"app.settings.web_auth.password.new_placeholder": "至少 6 位",
"app.settings.web_auth.password.save_failed": "修改管理员密码失败",
"app.settings.web_auth.password.save_success": "管理员密码已更新",
"app.settings.web_auth.password.submit": "保存新密码",
@@ -7942,6 +7943,7 @@
"web_auth.error.method_not_allowed": "请求方法不允许",
"web_auth.error.password_confirmation_mismatch": "两次输入的密码不一致",
"web_auth.error.password_min_length": "密码长度至少为 {{count}} 位",
"web_auth.error.password_managed_by_environment": "管理员密码由环境变量管理",
"web_auth.error.password_required": "管理员密码不能为空",
"web_auth.error.retry_after_seconds": ",请在 {{seconds}} 秒后重试",
"web_auth.error.setup_info_expired": "初始化信息已失效,请刷新页面后重试",
@@ -7980,7 +7982,7 @@
"web_auth.page.setup.next": "下一步",
"web_auth.page.setup.otpauth_label": "otpauth URI",
"web_auth.page.setup.password_label": "管理员密码",
"web_auth.page.setup.password_placeholder": "至少 10 位",
"web_auth.page.setup.password_placeholder": "至少 6 位",
"web_auth.page.setup.qr_alt": "Google Authenticator 二维码",
"web_auth.page.setup.recovery_intro": "恢复码仅显示这一次,建议离线保存:",
"web_auth.page.setup.remember_label": "记住登录(天)",

View File

@@ -2683,8 +2683,9 @@
"app.settings.web_auth.password.current_placeholder": "輸入目前管理員密碼",
"app.settings.web_auth.password.description": "修改密碼後會輪換目前 Web 工作階段,其他已登入工作階段會失效。",
"app.settings.web_auth.password.description_with_code": "修改密碼後會輪換目前 Web 工作階段,其他已登入工作階段會失效。啟用 2FA 時,還需要輸入目前驗證碼或恢復碼。",
"app.settings.web_auth.password.managed_by_environment": "管理員密碼由 GONAVI_WEB_PASSWORD 管理。容器部署請重新建立容器,其他部署請重新啟動 Web 服務。",
"app.settings.web_auth.password.new_label": "新管理員密碼",
"app.settings.web_auth.password.new_placeholder": "至少 10 位",
"app.settings.web_auth.password.new_placeholder": "至少 6 位",
"app.settings.web_auth.password.save_failed": "修改管理員密碼失敗",
"app.settings.web_auth.password.save_success": "管理員密碼已更新",
"app.settings.web_auth.password.submit": "儲存新密碼",
@@ -7942,6 +7943,7 @@
"web_auth.error.method_not_allowed": "不允許的請求方法",
"web_auth.error.password_confirmation_mismatch": "兩次輸入的密碼不一致",
"web_auth.error.password_min_length": "密碼長度至少為 {{count}} 位",
"web_auth.error.password_managed_by_environment": "管理員密碼由環境變數管理",
"web_auth.error.password_required": "管理員密碼不能為空",
"web_auth.error.retry_after_seconds": ",請在 {{seconds}} 秒後重試",
"web_auth.error.setup_info_expired": "初始化資訊已失效,請重新整理頁面後再試",
@@ -7980,7 +7982,7 @@
"web_auth.page.setup.next": "下一步",
"web_auth.page.setup.otpauth_label": "otpauth URI",
"web_auth.page.setup.password_label": "管理員密碼",
"web_auth.page.setup.password_placeholder": "至少 10 位",
"web_auth.page.setup.password_placeholder": "至少 6 位",
"web_auth.page.setup.qr_alt": "Google Authenticator QR Code",
"web_auth.page.setup.recovery_intro": "復原碼只會顯示這一次,建議離線保存:",
"web_auth.page.setup.remember_label": "記住登入(天)",