feat(auth)!: go fully passwordless and fix cross-check review findings
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.
This commit is contained in:
97 files changed
+1923
-1444
No files matched your search
@@ -5,11 +5,8 @@
|
||||
"filter_status_all": "全部状态",
|
||||
"search_no_match": "没有匹配的服务器。",
|
||||
"search_clear_btn": "清除筛选",
|
||||
"servers_count": "共 {{count}} 台",
|
||||
"servers_count_filtered": "显示 {{shown}} / {{total}} 台",
|
||||
"no_servers_linked": "暂无关联的服务器",
|
||||
"no_servers_hint": "认领一台你拥有访问权限的服务器,或联系管理员为你分配。",
|
||||
"my_servers_footer": "服务器及游戏类型由平台统一管理。认领后即可操作节点,原始集群配置不会暴露在此。",
|
||||
"phase_running": "运行中",
|
||||
"phase_starting": "启动中",
|
||||
"phase_stopping": "停止中",
|
||||
@@ -35,7 +32,6 @@
|
||||
"console_offline_title": "控制台未连接",
|
||||
"console_offline_body": "服务器运行后,实时控制台将自动连接。",
|
||||
"my_servers_breadcrumb": "我的服务器",
|
||||
"console_card_title": "控制台",
|
||||
"command_placeholder": "输入命令…如 list",
|
||||
"log_connecting": "连接中…",
|
||||
"log_live": "实时",
|
||||
@@ -74,7 +70,6 @@
|
||||
"access_whitelist_empty": "白名单暂无玩家。",
|
||||
"access_whitelist_empty_hint": "在上方添加玩家即可放行进服。",
|
||||
"access_whitelist_remove": "将 {{player}} 移出白名单",
|
||||
"access_whitelist_remove_q": "移除?",
|
||||
"access_remove": "移除",
|
||||
"access_whitelist_load_error": "无法加载白名单。",
|
||||
"access_whitelist_added": "已将 {{player}} 加入白名单。",
|
||||
@@ -89,14 +84,11 @@
|
||||
"access_online_raw": "查看服务器原始返回",
|
||||
"access_updated_at": "更新于 {{time}}",
|
||||
"access_kick_btn": "踢出",
|
||||
"access_kick_q": "踢出?",
|
||||
"access_ban_q": "封禁并禁止再进?",
|
||||
"access_kicked": "已踢出 {{player}}。",
|
||||
"access_ban_title": "封禁",
|
||||
"access_ban_desc": "封禁会将玩家踢出并禁止再次进入。展开可查看当前封禁名单并一键解封,也可输入完整玩家 ID 直接封禁。",
|
||||
"access_ban_btn": "封禁",
|
||||
"access_pardon_btn": "解封",
|
||||
"access_pardon_q": "解封并允许再进?",
|
||||
"access_ban_confirm": "确认封禁 {{player}}?此玩家将被踢出并无法再进入。",
|
||||
"access_ban_confirm_yes": "确认封禁",
|
||||
"access_ban_empty": "暂无封禁玩家。",
|
||||
@@ -129,41 +121,20 @@
|
||||
"create_server_policy_allowlist": "白名单——仅名单内玩家可启动",
|
||||
"create_server_cancel": "取消",
|
||||
"create_server_submit": "创建",
|
||||
"create_server_creating": "创建中…",
|
||||
"no_servers_managed": "你还没有管理的服务器",
|
||||
"no_servers_managed_hint": "使用「新建服务器」在线分配。",
|
||||
"server_admin_footer": "服务器仅通过此结构化表单创建——平台将选择映射为审核后的 Kubernetes spec。宿主机网络、宿主机路径、任意镜像、特权 Pod 等原始集群配置在此不可表达。",
|
||||
"edit_server_title": "编辑服务器配置",
|
||||
"edit_server_desc": "配置显示名、自启策略、镜像、内存与CPU",
|
||||
"edit_server_desc_long": "正在修改服务器的 spec 配置。未修改的项将保持原样。",
|
||||
"edit_server_unchanged": "保持不变",
|
||||
"edit_server_immutable": "保持不变 (不可修改)",
|
||||
"edit_server_submit": "保存配置",
|
||||
"edit_server_updating": "正在保存…",
|
||||
"luckperms_dialog_title": "LuckPerms 权限管理",
|
||||
"luckperms_dialog_desc": "在运行中的服务器上设置或取消玩家的权限节点与用户组(要求 LuckPerms 插件处于运行状态)。",
|
||||
"luckperms_tab_group": "用户组管理",
|
||||
"luckperms_tab_permission": "细粒度权限",
|
||||
"luckperms_player_name": "玩家用户名",
|
||||
"luckperms_group_name": "用户组名称",
|
||||
"luckperms_node": "权限节点",
|
||||
"luckperms_action": "操作类型",
|
||||
"luckperms_action_add": "添加至用户组 (add)",
|
||||
"luckperms_action_remove": "从用户组移除 (remove)",
|
||||
"luckperms_action_set": "设置权限节点 (set)",
|
||||
"luckperms_action_unset": "取消权限节点 (unset)",
|
||||
"luckperms_value": "权限值 (Value)",
|
||||
"luckperms_value_grant": "允许 (True)",
|
||||
"luckperms_value_deny": "拒绝 (False)",
|
||||
"luckperms_world": "世界范围 context (可选)",
|
||||
"luckperms_confirm": "执行变更",
|
||||
"luckperms_executing": "正在执行命令…",
|
||||
"luckperms_success": "LuckPerms 命令成功执行:",
|
||||
"luckperms_error_invalid_player": "玩家用户名格式错误 (支持1-16位英文字母、数字和下划线)",
|
||||
"luckperms_error_invalid_node": "权限节点格式错误 (支持1-64位字母、数字、点号、横线、下划线及通配符*)",
|
||||
"luckperms_error_invalid_group": "用户组名称格式错误 (支持1-48位字母、数字、横线和下划线)",
|
||||
"luckperms_error_invalid_world": "世界范围格式错误 (支持1-48位字母、数字、横线和下划线)",
|
||||
"luckperms_title": "LuckPerms 权限管理",
|
||||
"luckperms_desc": "精细化管理服务器上玩家的权限节点与用户组(需要 LuckPerms 插件处于运行状态)。",
|
||||
"luckperms_back_to_console": "返回控制台",
|
||||
"luckperms_select_player_prompt": "请在左侧选择在线玩家,或在上方输入玩家名进行查询",
|
||||
@@ -175,18 +146,20 @@
|
||||
"luckperms_value_column": "状态值",
|
||||
"luckperms_world_column": "生效世界",
|
||||
"luckperms_actions_column": "操作",
|
||||
"luckperms_query_btn": "查询玩家",
|
||||
"luckperms_custom_group_placeholder": "输入自定义组名...",
|
||||
"luckperms_batch_players": "玩家用户名列表",
|
||||
"luckperms_batch_players_placeholder": "输入玩家用户名,支持输入多个(用英文逗号或空格分隔)",
|
||||
"luckperms_recent_actions": "最近操作历史",
|
||||
"luckperms_no_recent_actions": "暂无最近操作历史。",
|
||||
"luckperms_revert": "撤销",
|
||||
"luckperms_reverting": "正在撤销...",
|
||||
"luckperms_revert_success": "已成功撤销该操作!",
|
||||
"luckperms_quick_presets": "常用快速预设",
|
||||
"luckperms_presets": "预设",
|
||||
"luckperms_batch_status": "批量执行进度",
|
||||
"luckperms_success_count": "成功: {{count}}",
|
||||
"luckperms_failed_count": "失败: {{count}}"
|
||||
"luckperms_no_parent_groups": "未分配任何父组",
|
||||
"luckperms_global": "全局",
|
||||
"luckperms_no_perms": "尚未分配任何权限节点",
|
||||
"luckperms_rcon_output": "RCON 控制台输出",
|
||||
"luckperms_clear_history": "清除历史记录",
|
||||
"edit_server_cpu": "CPU 限制",
|
||||
"edit_server_cpu_placeholder": "例如 1, 2, 500m",
|
||||
"owned_filter_mine": "我"
|
||||
}
|
||||
Reference in new issue
Block a user