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;