From 4a3631f82b4b13233b3ddbf9f48db55ac371833f Mon Sep 17 00:00:00 2001 From: JustMe Date: Thu, 8 Oct 2026 04:09:39 +0800 Subject: [PATCH] fix: gate password sessions on the login method so data-source sessions also get the passkey-only page [CI SKIP] --- web/admin/src/App.tsx | 5 +++-- web/admin/src/PasskeyOnly.tsx | 6 +----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/web/admin/src/App.tsx b/web/admin/src/App.tsx index ffdf817..e605773 100644 --- a/web/admin/src/App.tsx +++ b/web/admin/src/App.tsx @@ -244,7 +244,8 @@ export function App() { } if (!me) return // 密码登录的会话没有任何能力:只给它添加 Passkey 的页面 - if (me.kind === 'session' && me.auth_method === 'password') return + // 以数据源方式(会话令牌)连别的后端时 kind 是 token,所以只看登录方式 + if (me.auth_method === 'password') return return (
@@ -271,7 +272,7 @@ export function App() {
{me.username ?? 'API 令牌'}
- {me.kind === 'token' ? `API 令牌 · ${me.capabilities.length} 项能力` : '管理员'} + {me.kind === 'token' && !me.auth_method ? `API 令牌 · ${me.capabilities.length} 项能力` : '管理员'}
diff --git a/web/admin/src/PasskeyOnly.tsx b/web/admin/src/PasskeyOnly.tsx index d10cb2a..d556827 100644 --- a/web/admin/src/PasskeyOnly.tsx +++ b/web/admin/src/PasskeyOnly.tsx @@ -1,7 +1,6 @@ import { KeyRound, LogOut } from 'lucide-react' import { useEffect, useState } from 'react' import { api } from '@shared/api/client' -import { getBase } from '@shared/api/source' import type { Page, PasskeyDto } from '@shared/api/types' import { passkeySupported } from '@shared/api/webauthn' import { useAuth } from './auth' @@ -23,7 +22,6 @@ export function PasskeyOnly() { } useEffect(load, []) - const remote = !!getBase() return (
@@ -34,9 +32,7 @@ export function PasskeyOnly() {

用密码登录的会话不能管理任何东西,只能添加 Passkey。添加之后退出,用 Passkey 重新登录。
- {remote ? ( -
这是另一个后端:Passkey 绑定在后端自己的域名上,请直接打开那个后端的管理端地址再登录。
- ) : !passkeySupported() ? ( + {!passkeySupported() ? (
这个浏览器不支持 Passkey(需要 HTTPS 或 localhost)。
) : count === 0 || count === null ? (