From d028b194e770fd282320ad1c369670820a268e3b Mon Sep 17 00:00:00 2001 From: shuaiplus <2327005759@qq.com> Date: Sun, 5 Jul 2026 23:45:18 +0800 Subject: [PATCH] fix(admin): record audit clears and passkey 2fa status --- src/handlers/admin.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/handlers/admin.ts b/src/handlers/admin.ts index e56af1c..8fd752f 100644 --- a/src/handlers/admin.ts +++ b/src/handlers/admin.ts @@ -69,18 +69,22 @@ export async function handleAdminListUsers( const storage = new StorageService(env.DB); const users = await storage.getAllUsers(); - return jsonResponse({ - data: users.map(user => ({ + const data = await Promise.all(users.map(async user => { + const hasTwoFactorPasskey = await storage.countAccountPasskeyCredentialsByUserId(user.id, 'twoFactor') > 0; + return { id: user.id, email: user.email, name: user.name, role: user.role, status: user.status, - twoFactorEnabled: !!user.totpSecret || Boolean(user.yubikeyKey1 || user.yubikeyKey2 || user.yubikeyKey3 || user.yubikeyKey4 || user.yubikeyKey5), + twoFactorEnabled: !!user.totpSecret || Boolean(user.yubikeyKey1 || user.yubikeyKey2 || user.yubikeyKey3 || user.yubikeyKey4 || user.yubikeyKey5) || hasTwoFactorPasskey, creationDate: user.createdAt, revisionDate: user.updatedAt, object: 'user', - })), + }; + })); + return jsonResponse({ + data, object: 'list', continuationToken: null, }); @@ -183,6 +187,9 @@ export async function handleAdminClearAuditLogs( } const storage = new StorageService(env.DB); const deleted = await storage.clearAuditLogs(); + await writeAuditLog(storage, actorUser.id, 'admin.audit.clear', 'auditLog', null, { + deleted, + }, request); return jsonResponse({ object: 'auditLogClear', deleted }); }