From 5855b5f808c214335c66e30a500cf562170d8e07 Mon Sep 17 00:00:00 2001 From: qcqcqc <1220204124@zust.edu.cn> Date: Fri, 24 Oct 2025 11:04:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E5=A4=8DoauthUserAuth?= =?UTF-8?q?=E4=B8=AD=E7=9A=84revoke=E9=80=BB=E8=BE=91=EF=BC=8C=E5=9C=A8?= =?UTF-8?q?=E6=92=A4=E9=94=80=E6=97=B6=E8=BF=98=E9=9C=80=E8=A6=81=E5=B0=86?= =?UTF-8?q?unused=E7=9A=84=E6=89=80=E7=94=A8=E7=9A=84code=E9=83=BD?= =?UTF-8?q?=E6=A0=87=E8=AE=B0=E4=B8=BA=E5=B7=B2=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- es/triggers/oauthUserAuth.js | 26 ++++++++++++++++++++++---- lib/triggers/oauthUserAuth.js | 26 ++++++++++++++++++++++---- src/triggers/oauthUserAuth.ts | 31 ++++++++++++++++++++++++++----- 3 files changed, 70 insertions(+), 13 deletions(-) diff --git a/es/triggers/oauthUserAuth.js b/es/triggers/oauthUserAuth.js index f398b45b9..e8802c153 100644 --- a/es/triggers/oauthUserAuth.js +++ b/es/triggers/oauthUserAuth.js @@ -10,16 +10,34 @@ const triggers = [ const { filter } = operation; assert(filter, 'No filter found in revoke operation'); let res = 0; - // 如果没有token,可以直接删除oauthUserAuthorization + // 如果是unused并且code的usedAt是空的,则把code的usedAt全部设置为当前时间 + const opRes0 = await context.operate("oauthAuthorizationCode", { + id: await generateNewIdAsync(), + action: "update", + data: { + usedAt: new Date() + }, + filter: { + usedAt: { + $exists: false + }, + oauthUserAuthorization$code: { + ...filter, + // 未被使用肯定就没有tokenId + usageState: 'unused', + } + } + }, {}); + res += opRes0.oauthAuthorizationCode?.update || 0; + // 如果没有token,可以直接删除oauthUserAuthorization (可能是复用的之前的token, 也可能是未被使用的授权记录) const opRes = await context.operate("oauthUserAuthorization", { id: await generateNewIdAsync(), action: "remove", data: {}, filter: { ...filter, - tokenId: { - $exists: false - } + // 未被使用肯定就没有tokenId + usageState: 'unused', } }, {}); res += opRes.oauthApplication?.remove || 0; diff --git a/lib/triggers/oauthUserAuth.js b/lib/triggers/oauthUserAuth.js index 3fa720e59..fd51e554c 100644 --- a/lib/triggers/oauthUserAuth.js +++ b/lib/triggers/oauthUserAuth.js @@ -13,16 +13,34 @@ const triggers = [ const { filter } = operation; (0, assert_1.default)(filter, 'No filter found in revoke operation'); let res = 0; - // 如果没有token,可以直接删除oauthUserAuthorization + // 如果是unused并且code的usedAt是空的,则把code的usedAt全部设置为当前时间 + const opRes0 = await context.operate("oauthAuthorizationCode", { + id: await (0, uuid_1.generateNewIdAsync)(), + action: "update", + data: { + usedAt: new Date() + }, + filter: { + usedAt: { + $exists: false + }, + oauthUserAuthorization$code: { + ...filter, + // 未被使用肯定就没有tokenId + usageState: 'unused', + } + } + }, {}); + res += opRes0.oauthAuthorizationCode?.update || 0; + // 如果没有token,可以直接删除oauthUserAuthorization (可能是复用的之前的token, 也可能是未被使用的授权记录) const opRes = await context.operate("oauthUserAuthorization", { id: await (0, uuid_1.generateNewIdAsync)(), action: "remove", data: {}, filter: { ...filter, - tokenId: { - $exists: false - } + // 未被使用肯定就没有tokenId + usageState: 'unused', } }, {}); res += opRes.oauthApplication?.remove || 0; diff --git a/src/triggers/oauthUserAuth.ts b/src/triggers/oauthUserAuth.ts index b263f4f96..4f2a8776d 100644 --- a/src/triggers/oauthUserAuth.ts +++ b/src/triggers/oauthUserAuth.ts @@ -15,18 +15,39 @@ const triggers = [ assert(filter, 'No filter found in revoke operation'); let res = 0; - // 如果没有token,可以直接删除oauthUserAuthorization + + // 如果是unused并且code的usedAt是空的,则把code的usedAt全部设置为当前时间 + const opRes0 = await context.operate("oauthAuthorizationCode", { + id: await generateNewIdAsync(), + action: "update", + data: { + usedAt: new Date() + }, + filter: { + usedAt: { + $exists: false + }, + oauthUserAuthorization$code: { + ...filter, + // 未被使用肯定就没有tokenId + usageState: 'unused', + } + } + }, {}); + + res += opRes0.oauthAuthorizationCode?.update || 0; + + // 如果没有token,可以直接删除oauthUserAuthorization (可能是复用的之前的token, 也可能是未被使用的授权记录) const opRes = await context.operate("oauthUserAuthorization", { id: await generateNewIdAsync(), action: "remove", data: {}, filter: { ...filter, - tokenId: { - $exists: false - } + // 未被使用肯定就没有tokenId + usageState: 'unused', } - }, {}) + }, {}); res += opRes.oauthApplication?.remove || 0;