Remove password authentication everywhere; the only session doors are passkey (WebAuthn), email OTP, in-game bind codes, QR scan-login, and op-login vouching. Remediates the 33-finding cross-check review across backend, CLI, panel, plugins, and docs. Backend/CLI: - Drop password routes and fields from account/user/onboard/auth handlers; align tests (new account subtests, naming reserves "console", op-login/onboard/qr-login test updates). - Add migrations 0016_op_login.sql and 0017_drop_password.sql. - Thread panel/admin hostnames from hostcfg through api.go, setup_panel.go, tui_root.go and tui_preflight.go instead of hardcoding; bootstrap.sh writes panel-hostname/admin-hostname into felis.toml. - Reword breakglass and TUI copy for passwordless flows. Panel: - Delete the ChangePassword page and all password UI; align login/auth/api/types with the passwordless contract; add the migration and op-login approval flows. - i18n: convert ImageBuildPage durations/status badges and ServerLuckPerms strings to translation keys; drop 72 orphan keys per locale; unify the title as "Felis - Console". Plugins (all six rebuilt): - Velocity waiting router returns 503 at_capacity during wake; MOTD/control-channel copy and config comments. - Paper zh menu title; Limbo bind-code TTL 600s with panel_url preference; unified /link lines in fabric/forge/neoforge; shared link-client javadoc contract fixes. Docs: openapi.yaml, sequence-diagrams.md, deploy/limbo/README.md and plugins/README.md aligned with the implementation. BREAKING CHANGE: migration 0017 irreversibly drops users.password_hash and users.must_change_password; password login cannot be restored after migrating.
73 lines
3.9 KiB
JSON
73 lines
3.9 KiB
JSON
{
|
|
"title": "账户",
|
|
"subtitle": "身份验证与 Minecraft 关联。",
|
|
"session": "会话",
|
|
"session_desc": "面板不持有凭据——每次请求均通过当前会话 Cookie 完成认证,无论该 Cookie 由 Passkey / 邮箱登录还是平台身份代理(Zero-Trust / Access)签发。",
|
|
"sign_out": "退出登录",
|
|
"signing_out": "退出中…",
|
|
"minecraft_link": "Minecraft 关联",
|
|
"checking_link": "正在检查关联状态…",
|
|
"linked_title": "Minecraft 账户已关联。",
|
|
"linked_desc": "关联后可认领及管理服务器——所有权相关操作(认领、启动、停止)已解锁。",
|
|
"uuid_label": "UUID",
|
|
"step1_title": "在游戏中获取绑定码",
|
|
"step1_desc_prefix": "加入任意服务器,在聊天框输入 ",
|
|
"step1_desc_suffix": " 。服务器已确认你的身份,会提供一个一次性绑定码(约 10 分钟内有效)。",
|
|
"step2_title": "在此输入",
|
|
"link_code": "绑定码",
|
|
"link_code_placeholder": "ABCD2345",
|
|
"verify_btn": "关联",
|
|
"verifying": "验证中…",
|
|
"email_verification": "邮箱验证",
|
|
"email_desc": "验证你的电子邮箱以确保账号安全。",
|
|
"email_verified": "已验证",
|
|
"send_code": "获取验证码",
|
|
"sending_code": "发送中…",
|
|
"email_step1": "输入电子邮箱",
|
|
"email_step1_desc": "输入你想要绑定的电子邮箱地址以获取验证码。",
|
|
"email_step2": "输入验证码",
|
|
"email_step2_desc": "输入发送至你邮箱的 6 位数字验证码(10 分钟内有效)。",
|
|
"email_verify_btn": "验证",
|
|
"email_verifying": "验证中…",
|
|
"email_otp_sent": "验证码已发送。",
|
|
"otp_code_placeholder": "6 位验证码",
|
|
"change_email": "修改邮箱",
|
|
"continue_btn": "继续",
|
|
"passkeys": "Passkey 注册管理",
|
|
"passkeys_desc": "Passkey 允许你使用指纹、面容或设备 PIN 码安全登录面板。",
|
|
"no_passkeys": "未绑定任何 Passkey。",
|
|
"loading_passkeys": "加载 Passkey 列表中…",
|
|
"add_passkey": "注册新 Passkey",
|
|
"passkey_name": "设备昵称",
|
|
"passkey_name_placeholder": "例如:我的手机, YubiKey",
|
|
"registering_passkey": "注册中…",
|
|
"created_at": "注册时间:",
|
|
"last_used": "上次使用:",
|
|
"never": "从未",
|
|
"migration": "账户迁移",
|
|
"migration_desc": "将被弃用账户名下的所有服务器转移到本账户。迁移在游戏内发起,在此完成。",
|
|
"account_id": "账户 ID",
|
|
"migration_checking": "正在检查迁移状态…",
|
|
"migration_none_prefix": "当前没有进行中的迁移。若要将本账户的服务器转移到其他账户,请用被弃用的账户在游戏内输入 ",
|
|
"migration_none_suffix": " 。",
|
|
"migration_confirm_title": "确认身份",
|
|
"migration_confirm_desc": "迁移会停用本账户,因此需要先完成一次身份核验。",
|
|
"migration_confirming": "确认中…",
|
|
"migration_confirm_passkey_btn": "使用 Passkey 确认",
|
|
"migration_confirm_otp_btn": "发送验证码到我的邮箱",
|
|
"migration_issue_title": "指定目标账户",
|
|
"migration_issue_desc": "将目标账户本页面显示的「账户 ID」粘贴到此处,然后签发一次性转移码。",
|
|
"migration_target_placeholder": "目标账户 ID",
|
|
"migration_issuing": "签发中…",
|
|
"migration_issue_btn": "签发转移码",
|
|
"migration_code_title": "转移码(仅显示一次)",
|
|
"migration_code_desc": "请在过期前登录目标账户并在其页面兑换此码",
|
|
"migration_code_pending": "转移码已签发。请在过期前用目标账户完成兑换",
|
|
"migration_redeem_title": "兑换转移码",
|
|
"migration_redeem_desc": "收到了被弃用账户的转移码?在此兑换即可接管其服务器。",
|
|
"migration_redeem_placeholder": "转移码",
|
|
"migration_redeeming": "兑换中…",
|
|
"migration_redeem_btn": "兑换",
|
|
"migration_redeemed": "迁移完成——已有 {{count}} 台服务器转移至本账户。"
|
|
}
|