feat(api): 会话记录设备与最近活动,账户页可查看并退出任一设备,删除 passkey 或更换邮箱时退出其它设备,staff 会话空闲 30 分钟失效,吊销会话校验所属用户

This commit is contained in:
Lemon-miaow committed 2026-09-25 14:06:02 +08:00
1 parent 98295e630e
commit 9e7f23ca13
40 files changed
+2139 -179

No files matched your search

+19 -3
View File
@@ -1,8 +1,24 @@
{
"title": "Account",
"subtitle": "Identity and Minecraft linking.",
"session": "Session",
"session_desc": "The panel itself holds no credentials — every request rides your existing session cookie, whether issued by a passkey / email sign-in or the platform's identity proxy (Zero-Trust / Access).",
"sessions_title": "Signed-in devices",
"sessions_desc": "Every browser signed in to your account. Sign out any you don't recognize.",
"sessions_staff_idle": "Operator sessions sign out on their own after 30 minutes without activity.",
"loading_sessions": "Loading devices…",
"sessions_empty": "No devices are signed in with a panel session.",
"session_this_device": "This device",
"session_device": "{{browser}} on {{os}}",
"session_device_unknown": "Unknown device",
"session_active_now": "Active now",
"session_active": "Active {{when}}",
"session_signed_in": "Signed in {{when}}",
"session_sign_out_aria": "Sign out {{device}}",
"session_signed_out_device": "Signed out {{device}}.",
"sessions_sign_out_others": "Sign out other devices",
"sessions_sign_out_others_title": "Sign out every other device?",
"sessions_sign_out_others_desc": "Every device except this one is signed out and has to sign in again.",
"sessions_signed_out_others_one": "Signed out {{count}} other device.",
"sessions_signed_out_others_other": "Signed out {{count}} other devices.",
"sign_out": "Sign out",
"signing_out": "Signing out…",
"minecraft_link": "Minecraft link",
@@ -46,7 +62,7 @@
"never": "Never",
"passkey_delete_aria": "Delete passkey “{{name}}”",
"passkey_delete_title": "Delete this passkey?",
"passkey_delete_desc": "“{{name}}” (registered {{created}}) will no longer sign you in. You can register it again later.",
"passkey_delete_desc": "“{{name}}” (registered {{created}}) will no longer sign you in. You can register it again later. Your other devices are signed out too.",
"passkey_delete_confirm": "Delete",
"passkey_last_hint": "This is your only passkey and your email is not verified, so deleting it would lock you out. Verify an email or add another passkey first.",
"migration": "Account migration",
+1 -1
View File
@@ -197,7 +197,7 @@
"users_no_sessions": "No active sessions.",
"users_session_expires": "Expires",
"users_sessions_revoke_all": "Revoke All",
"users_session_revoke_one": "Revoke this session",
"users_session_revoke_device": "Revoke the session on {{device}}",
"users_sessions_revoked": "All sessions revoked.",
"users_session_revoke_one_dlg_title": "Revoke Session",
"users_session_revoke_one_dlg_desc": "Are you sure you want to revoke this session? The user will be logged out from this device immediately.",
@@ -29,6 +29,7 @@
"forbidden": "You are not allowed to do that.",
"self_protected": "You can't do that to the account you're signed in with.",
"owner_protected": "The owner account can't be demoted, disabled or deleted from the panel. Only the host's break-glass console (sudo felis breakGlass) manages it.",
"session_not_found": "That session has already ended.",
"generic": "Something went wrong.",
"otp_resend_cooldown": "Verification code requested too frequently, please try again later.",
"otp_locked": "Too many incorrect attempts, please request a new verification code.",
+18 -3
View File
@@ -1,8 +1,23 @@
{
"title": "账户",
"subtitle": "身份验证与 Minecraft 关联。",
"session": "会话",
"session_desc": "面板不持有凭据——每次请求均通过当前会话 Cookie 完成认证,无论该 Cookie 由 Passkey / 邮箱登录还是平台身份代理(Zero-Trust / Access)签发。",
"sessions_title": "已登录的设备",
"sessions_desc": "所有登录了你账号的浏览器。发现不认识的设备,请立即让它退出。",
"sessions_staff_idle": "运维账号的会话连续 30 分钟没有操作会自动退出。",
"loading_sessions": "正在加载设备…",
"sessions_empty": "没有设备以面板会话登录。",
"session_this_device": "本设备",
"session_device": "{{os}} 上的 {{browser}}",
"session_device_unknown": "未知设备",
"session_active_now": "正在使用",
"session_active": "{{when}}活跃",
"session_signed_in": "{{when}}登录",
"session_sign_out_aria": "让 {{device}} 退出登录",
"session_signed_out_device": "{{device}} 已退出登录。",
"sessions_sign_out_others": "退出其它设备",
"sessions_sign_out_others_title": "让其它所有设备退出登录?",
"sessions_sign_out_others_desc": "除本设备外,其它设备都会退出登录,需要重新登录才能继续使用。",
"sessions_signed_out_others_other": "已让 {{count}} 台其它设备退出登录。",
"sign_out": "退出登录",
"signing_out": "退出中…",
"minecraft_link": "Minecraft 关联",
@@ -46,7 +61,7 @@
"never": "从未",
"passkey_delete_aria": "删除 Passkey「{{name}}」",
"passkey_delete_title": "删除这个 Passkey?",
"passkey_delete_desc": "「{{name}}」(注册于 {{created}})删除后无法再用它登录,需要时可以重新注册。",
"passkey_delete_desc": "「{{name}}」(注册于 {{created}})删除后无法再用它登录,需要时可以重新注册。其它设备上的登录也会一并退出。",
"passkey_delete_confirm": "删除",
"passkey_last_hint": "这是你唯一的 Passkey,邮箱也还没验证,删掉就没法登录了。先验证邮箱或再注册一个 Passkey,才能删除它。",
"migration": "账户迁移",
+1 -1
View File
@@ -197,7 +197,7 @@
"users_no_sessions": "无活跃会话。",
"users_session_expires": "过期时间",
"users_sessions_revoke_all": "全部撤销",
"users_session_revoke_one": "单独撤销",
"users_session_revoke_device": "吊销 {{device}} 上的会话",
"users_sessions_revoked": "所有会话已撤销。",
"users_session_revoke_one_dlg_title": "撤销会话",
"users_session_revoke_one_dlg_desc": "确定撤销此会话吗?用户将立即从该设备登出。",
@@ -29,6 +29,7 @@
"forbidden": "你无权执行此操作。",
"self_protected": "不能对当前登录的账号执行此操作。",
"owner_protected": "所有者账号不能在面板里降级、禁用或删除,只能在主机的应急控制台(sudo felis breakGlass)上管理。",
"session_not_found": "这个会话已经结束了。",
"generic": "出了点问题,请稍后重试。",
"otp_resend_cooldown": "验证码发送频繁,请稍后再试。",
"otp_locked": "验证码错误次数过多,请重新获取验证码。",