vona-module-a-captcha 5.1.16 → 5.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bean/bean.captcha.d.ts.map +1 -1
- package/dist/bean/cacheRedis.captcha.d.ts +6 -1
- package/dist/bean/cacheRedis.captcha.d.ts.map +1 -1
- package/dist/index.js +35 -22
- package/dist/index.js.map +1 -1
- package/dist/lib/captchaLua.d.ts +2 -2
- package/dist/lib/captchaLua.d.ts.map +1 -1
- package/dist/types/captcha.d.ts +1 -0
- package/dist/types/captcha.d.ts.map +1 -1
- package/dist/types/captchaProvider.d.ts +1 -1
- package/dist/types/captchaProvider.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/bean/bean.captcha.ts +26 -7
- package/src/bean/cacheRedis.captcha.ts +14 -9
- package/src/lib/captchaLua.ts +8 -8
- package/src/types/captcha.ts +1 -0
- package/src/types/captchaProvider.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bean.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/bean.captcha.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAqC,MAAM,MAAM,CAAC;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAO3E,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAGlC,qBACa,WAAY,SAAQ,QAAQ;IACjC,MAAM,CAAC,SAAS,EAAE,MAAM,mBAAmB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;YAyB9E,YAAY;
|
|
1
|
+
{"version":3,"file":"bean.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/bean.captcha.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAqC,MAAM,MAAM,CAAC;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAO3E,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAGlC,qBACa,WAAY,SAAQ,QAAQ;IACjC,MAAM,CAAC,SAAS,EAAE,MAAM,mBAAmB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;YAyB9E,YAAY;IAiGpB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB;IAgCxD,MAAM,CACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,mBAAmB,EACpC,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC;YA2BL,YAAY;IAoCpB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;IAyBpE,cAAc,CAAC,EAAE,EAAE,MAAM;IAIzB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;YAqBrC,UAAU;IAyBxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,mBAAmB;YAOb,gBAAgB;IAY9B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;CAmB1B"}
|
|
@@ -22,6 +22,7 @@ export declare class CacheRedisCaptcha extends ServiceCacheRedisBase<TCacheRedis
|
|
|
22
22
|
reserved: false;
|
|
23
23
|
retryAt: number;
|
|
24
24
|
resendAt: number;
|
|
25
|
+
serverNow: number;
|
|
25
26
|
snapshot?: undefined;
|
|
26
27
|
} | {
|
|
27
28
|
reserved: true;
|
|
@@ -29,10 +30,14 @@ export declare class CacheRedisCaptcha extends ServiceCacheRedisBase<TCacheRedis
|
|
|
29
30
|
raw: string;
|
|
30
31
|
data: ICaptchaDataCache;
|
|
31
32
|
};
|
|
33
|
+
serverNow: number;
|
|
32
34
|
retryAt?: undefined;
|
|
33
35
|
resendAt?: undefined;
|
|
34
36
|
}>;
|
|
35
|
-
finalizeBound(id: string, snapshot: ICaptchaSnapshot, data?: ICaptchaDataCache): Promise<
|
|
37
|
+
finalizeBound(id: string, snapshot: ICaptchaSnapshot, data?: ICaptchaDataCache): Promise<{
|
|
38
|
+
finalized: boolean;
|
|
39
|
+
serverNow: number;
|
|
40
|
+
}>;
|
|
36
41
|
/** -1 asks the verifier to reread a competing wrong-attempt update. */
|
|
37
42
|
consumeBound(id: string, snapshot: ICaptchaSnapshot, verified: boolean): Promise<number>;
|
|
38
43
|
validateAuthorization(authorization: ICaptchaAuthorization): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheRedis.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/cacheRedis.captcha.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAc,MAAM,qBAAqB,CAAC;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AASzE,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC3C,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,qBACa,iBAAkB,SAAQ,qBAAqB,CAC1D,qBAAqB,EACrB,sBAAsB,CACvB;IACO,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAM3D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM;IAM5D,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,CAAC,EAAE,iBAAiB,EACxB,GAAG,CAAC,EAAE,MAAM;IAWd,WAAW;IAKX,kFAAkF;IAClF,SAAS,CACP,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,IAAI,GAAG,iBAAiB,GAAG,UAAU,CAAC;;;;;IAevF,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,qBAAqB
|
|
1
|
+
{"version":3,"file":"cacheRedis.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/cacheRedis.captcha.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAc,MAAM,qBAAqB,CAAC;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AASzE,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC3C,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,qBACa,iBAAkB,SAAQ,qBAAqB,CAC1D,qBAAqB,EACrB,sBAAsB,CACvB;IACO,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAM3D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM;IAM5D,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,CAAC,EAAE,iBAAiB,EACxB,GAAG,CAAC,EAAE,MAAM;IAWd,WAAW;IAKX,kFAAkF;IAClF,SAAS,CACP,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,IAAI,GAAG,iBAAiB,GAAG,UAAU,CAAC;;;;;IAevF,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,qBAAqB;;;;;;;;;;kBA0B7B,iBAAiB;;;;;;IAK1E,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,iBAAiB;;;;IAYpF,uEAAuE;IACjE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO;IAmB5E,qBAAqB,CAAC,aAAa,EAAE,qBAAqB;IAI1D,OAAO,CAAC,sBAAsB;IA8C9B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,UAAU;YAMJ,KAAK;CAIpB"}
|
package/dist/index.js
CHANGED
|
@@ -83,6 +83,7 @@ let BeanCaptcha = class BeanCaptcha extends BeanBase {
|
|
|
83
83
|
provider: provider.name,
|
|
84
84
|
payload: undefined,
|
|
85
85
|
status: 'limited',
|
|
86
|
+
serverNow: reservation.serverNow,
|
|
86
87
|
resendAt: reservation.resendAt || undefined,
|
|
87
88
|
retryAt: reservation.retryAt
|
|
88
89
|
};
|
|
@@ -97,23 +98,25 @@ let BeanCaptcha = class BeanCaptcha extends BeanBase {
|
|
|
97
98
|
// A reservation authorizes exactly one external attempt. Never retry sends.
|
|
98
99
|
captcha = await beanInstance.create(provider.options, context);
|
|
99
100
|
} catch {
|
|
100
|
-
await cache.finalizeBound(id, snapshot);
|
|
101
|
+
const finalized = await cache.finalizeBound(id, snapshot);
|
|
101
102
|
return {
|
|
102
103
|
id: '',
|
|
103
104
|
provider: provider.name,
|
|
104
105
|
payload: undefined,
|
|
105
106
|
status: 'unknown',
|
|
107
|
+
serverNow: finalized.serverNow,
|
|
106
108
|
...timing
|
|
107
109
|
};
|
|
108
110
|
}
|
|
109
111
|
const outcome = captcha.outcome ?? 'accepted';
|
|
110
112
|
if (outcome !== 'accepted' || captcha.token === undefined || captcha.token === null) {
|
|
111
|
-
await cache.finalizeBound(id, snapshot);
|
|
113
|
+
const finalized = await cache.finalizeBound(id, snapshot);
|
|
112
114
|
return {
|
|
113
115
|
id: '',
|
|
114
116
|
provider: provider.name,
|
|
115
117
|
payload: undefined,
|
|
116
118
|
status: outcome === 'rejected' ? 'rejected' : 'unknown',
|
|
119
|
+
serverNow: finalized.serverNow,
|
|
117
120
|
...timing
|
|
118
121
|
};
|
|
119
122
|
}
|
|
@@ -127,22 +130,26 @@ let BeanCaptcha = class BeanCaptcha extends BeanBase {
|
|
|
127
130
|
}
|
|
128
131
|
};
|
|
129
132
|
const finalized = await cache.finalizeBound(id, snapshot, active);
|
|
130
|
-
if (!finalized)
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
133
|
+
if (!finalized.finalized) {
|
|
134
|
+
return {
|
|
135
|
+
id: '',
|
|
136
|
+
provider: provider.name,
|
|
137
|
+
payload: undefined,
|
|
138
|
+
status: 'unknown',
|
|
139
|
+
serverNow: finalized.serverNow,
|
|
140
|
+
...timing
|
|
141
|
+
};
|
|
142
|
+
}
|
|
137
143
|
const result = {
|
|
138
144
|
id,
|
|
139
145
|
provider: provider.name,
|
|
140
146
|
payload: captcha.payload,
|
|
141
147
|
status: 'accepted',
|
|
148
|
+
serverNow: finalized.serverNow,
|
|
142
149
|
...timing
|
|
143
150
|
};
|
|
144
|
-
//
|
|
145
|
-
if (captcha.exposeToken === true) result.token = captcha.token;
|
|
151
|
+
// Bound providers must also authorize disclosure for their actual transport.
|
|
152
|
+
if (this.scope.config.captcha.showToken && captcha.exposeToken === true) result.token = captcha.token;
|
|
146
153
|
return result;
|
|
147
154
|
}
|
|
148
155
|
async refresh(id, sceneName) {
|
|
@@ -380,8 +387,8 @@ for i, budget in ipairs(policy.budgets) do
|
|
|
380
387
|
counters[i] = { value = value, deadline = deadline }
|
|
381
388
|
if value >= budget.limit and deadline > retryAt then retryAt = deadline end
|
|
382
389
|
end
|
|
383
|
-
if retryAt > now then return { 0, '', retryAt, cooldown } end
|
|
384
|
-
if redis.call('EXISTS', KEYS[1]) == 1 then return { -1 } end
|
|
390
|
+
if retryAt > now then return { 0, '', retryAt, cooldown, now } end
|
|
391
|
+
if redis.call('EXISTS', KEYS[1]) == 1 then return { -1, '', 0, 0, now } end
|
|
385
392
|
local data = cjson.decode(ARGV[3])
|
|
386
393
|
data.bound.expiresAt = now + policy.ttl
|
|
387
394
|
data.bound.resendAt = now + policy.cooldown
|
|
@@ -398,22 +405,22 @@ if policy.cooldown > 0 then
|
|
|
398
405
|
redis.call('SET', KEYS[3], tostring(data.bound.resendAt))
|
|
399
406
|
redis.call('PEXPIREAT', KEYS[3], data.bound.resendAt)
|
|
400
407
|
end
|
|
401
|
-
return { 1, raw, data.bound.expiresAt, data.bound.resendAt }
|
|
408
|
+
return { 1, raw, data.bound.expiresAt, data.bound.resendAt, now }
|
|
402
409
|
`;
|
|
403
410
|
const captchaFinalizeLua = `
|
|
404
|
-
local current = redis.call('GET', KEYS[1])
|
|
405
|
-
if current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return 0 end
|
|
406
|
-
local data = cjson.decode(current)
|
|
407
411
|
local time = redis.call('TIME')
|
|
408
412
|
local now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)
|
|
409
|
-
|
|
413
|
+
local current = redis.call('GET', KEYS[1])
|
|
414
|
+
if current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return { 0, now } end
|
|
415
|
+
local data = cjson.decode(current)
|
|
416
|
+
if data.bound.state ~= 'pending' or data.bound.expiresAt <= now then return { 0, now } end
|
|
410
417
|
if ARGV[3] == '' then
|
|
411
418
|
redis.call('DEL', KEYS[1])
|
|
412
419
|
else
|
|
413
420
|
redis.call('SET', KEYS[1], ARGV[3])
|
|
414
421
|
redis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)
|
|
415
422
|
end
|
|
416
|
-
return 1
|
|
423
|
+
return { 1, now }
|
|
417
424
|
`;
|
|
418
425
|
// Verification happens in the provider. Only the caller holding this exact active
|
|
419
426
|
// snapshot can commit its verdict, so success cannot race refresh or another use.
|
|
@@ -489,7 +496,8 @@ let CacheRedisCaptcha = class CacheRedisCaptcha extends ServiceCacheRedisBase {
|
|
|
489
496
|
return {
|
|
490
497
|
reserved: false,
|
|
491
498
|
retryAt: result[2],
|
|
492
|
-
resendAt: result[3]
|
|
499
|
+
resendAt: result[3],
|
|
500
|
+
serverNow: result[4]
|
|
493
501
|
};
|
|
494
502
|
}
|
|
495
503
|
if (result[0] !== 1 || !result[1]) throw new Error('invalid captcha reservation');
|
|
@@ -498,14 +506,19 @@ let CacheRedisCaptcha = class CacheRedisCaptcha extends ServiceCacheRedisBase {
|
|
|
498
506
|
snapshot: {
|
|
499
507
|
raw: result[1],
|
|
500
508
|
data: JSON.parse(result[1])
|
|
501
|
-
}
|
|
509
|
+
},
|
|
510
|
+
serverNow: result[4]
|
|
502
511
|
};
|
|
503
512
|
}
|
|
504
513
|
async finalizeBound(id, snapshot, data) {
|
|
505
514
|
this._validateBoundId(id);
|
|
506
515
|
const scope = snapshot.data.bound.scope;
|
|
507
516
|
const pointer = `${this.boundPrefix()}current:${scope}`;
|
|
508
|
-
|
|
517
|
+
const result = await this._eval(captchaFinalizeLua, [id, pointer], [snapshot.raw, id, data === undefined ? '' : JSON.stringify(data)]);
|
|
518
|
+
return {
|
|
519
|
+
finalized: result[0] === 1,
|
|
520
|
+
serverNow: result[1]
|
|
521
|
+
};
|
|
509
522
|
}
|
|
510
523
|
/** -1 asks the verifier to reread a competing wrong-attempt update. */
|
|
511
524
|
async consumeBound(id, snapshot, verified) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/bean/interceptor.captchaVerify.ts","../src/bean/bean.captcha.ts","../src/lib/captchaLua.ts","../src/bean/cacheRedis.captcha.ts","../src/lib/const.ts","../src/bean/hmr.captchaProvider.ts","../src/bean/hmr.captchaScene.ts","../src/dto/captchaData.ts","../src/dto/captchaVerify.ts","../src/controller/captcha.ts","../src/config/config.ts","../src/.metadata/index.ts","../src/config/locale/en-us.ts","../src/config/locale/zh-cn.ts","../src/.metadata/locales.ts","../src/lib/captchaProvider.ts","../src/lib/captchaScene.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["InterceptorCaptchaVerify","BeanBase","execute","options","next","sceneName","scene","Error","bodyField","captcha","ctx","request","body","verified","bean","verify","id","token","zodCustomError","scope","locale","CaptchaInvalid","__decorate","Interceptor","__z_BeanInfo","module","BeanCaptcha","create","context","provider","_resolveProvider","beanInstance","_getProviderInstance","name","bound","_createBound","uuidv4","data","revision","created","cacheRedis","createImage","ttl","config","captchaProvider","result","payload","showToken","authorization","_authorize","app","throw","cache","boundPrefix","pending","binding","state","expiresAt","resendAt","attemptsRemaining","maxAttempts","version","reservation","reserveBound","reserved","undefined","status","retryAt","snapshot","timing","finalizeBound","outcome","active","finalized","exposeToken","refresh","_getProviderOptions","compareAndSet","_verifyBound","token2","consumed","changed","original","retry","_bindingMatches","committed","consumeBound","verifyImmediate","tokenSecondary","ttlSecondary","getCaptchaData","get","updateAgeOnGet","updateCaptchaToken","operation","authorize","validateAuthorization","recipient","purpose","subject","recipientLimits","map","limit","ipLimits","a","b","providerName","beanFullName","beanFullNameFromOnionName","_getBean","_getProviders","providers","Object","keys","length","onionOptions","onion","captchaScene","getOnionOptionsDynamic","resolver","resolverDefault","getOnionSlice","_prepareProviders","_key","key","providerOptions","slice","checkOnionOptionsEnabled","assign","Bean","_ctx","index","getRandomInt","captchaCasLua","captchaReserveLua","captchaFinalizeLua","captchaConsumeLua","CacheRedisCaptcha","ServiceCacheRedisBase","redis","_redisKeys","raw","JSON","parse","_validateTtl","set","stringify","_eval","instance","createHash","update","String","__getInstanceIdScope","digest","boundKeys","prefix","pointer","cooldown","budgets","windowMs","ip","_validateAuthorization","_validateBoundId","policy","text","value","hash","test","Number","isSafeInteger","MAX_SAFE_INTEGER","Date","now","limits","Array","isArray","windows","Set","has","add","startsWith","ids","__cacheInstance","getRedisKey","lua","args","eval","CacheRedis","disableTransactionCompensate","SymbolCacheSceneProviders","Symbol","clearAllCacheSceneProviders","meta","HmrCaptchaProvider","reload","_beanOptions","Hmr","HmrCaptchaScene","DtoCaptchaData","constructor","Api","field","prototype","z","string","v","optional","Dto","DtoCaptchaVerify","required","ControllerCaptcha","Web","post","Passport","public","__param","Arg","Controller","isProd","ScopeModuleACaptcha","BeanScopeBase","Scope","locales","locale_en_us","locale_zh_cn","$locale","$makeLocaleMagic","CaptchaProvider","createBeanDecorator","CaptchaScene"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/bean/interceptor.captchaVerify.ts","../src/bean/bean.captcha.ts","../src/lib/captchaLua.ts","../src/bean/cacheRedis.captcha.ts","../src/lib/const.ts","../src/bean/hmr.captchaProvider.ts","../src/bean/hmr.captchaScene.ts","../src/dto/captchaData.ts","../src/dto/captchaVerify.ts","../src/controller/captcha.ts","../src/config/config.ts","../src/.metadata/index.ts","../src/config/locale/en-us.ts","../src/config/locale/zh-cn.ts","../src/.metadata/locales.ts","../src/lib/captchaProvider.ts","../src/lib/captchaScene.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["InterceptorCaptchaVerify","BeanBase","execute","options","next","sceneName","scene","Error","bodyField","captcha","ctx","request","body","verified","bean","verify","id","token","zodCustomError","scope","locale","CaptchaInvalid","__decorate","Interceptor","__z_BeanInfo","module","BeanCaptcha","create","context","provider","_resolveProvider","beanInstance","_getProviderInstance","name","bound","_createBound","uuidv4","data","revision","created","cacheRedis","createImage","ttl","config","captchaProvider","result","payload","showToken","authorization","_authorize","app","throw","cache","boundPrefix","pending","binding","state","expiresAt","resendAt","attemptsRemaining","maxAttempts","version","reservation","reserveBound","reserved","undefined","status","serverNow","retryAt","snapshot","timing","finalized","finalizeBound","outcome","active","exposeToken","refresh","_getProviderOptions","compareAndSet","_verifyBound","token2","consumed","changed","original","retry","_bindingMatches","committed","consumeBound","verifyImmediate","tokenSecondary","ttlSecondary","getCaptchaData","get","updateAgeOnGet","updateCaptchaToken","operation","authorize","validateAuthorization","recipient","purpose","subject","recipientLimits","map","limit","ipLimits","a","b","providerName","beanFullName","beanFullNameFromOnionName","_getBean","_getProviders","providers","Object","keys","length","onionOptions","onion","captchaScene","getOnionOptionsDynamic","resolver","resolverDefault","getOnionSlice","_prepareProviders","_key","key","providerOptions","slice","checkOnionOptionsEnabled","assign","Bean","_ctx","index","getRandomInt","captchaCasLua","captchaReserveLua","captchaFinalizeLua","captchaConsumeLua","CacheRedisCaptcha","ServiceCacheRedisBase","redis","_redisKeys","raw","JSON","parse","_validateTtl","set","stringify","_eval","instance","createHash","update","String","__getInstanceIdScope","digest","boundKeys","prefix","pointer","cooldown","budgets","windowMs","ip","_validateAuthorization","_validateBoundId","policy","text","value","hash","test","Number","isSafeInteger","MAX_SAFE_INTEGER","Date","now","limits","Array","isArray","windows","Set","has","add","startsWith","ids","__cacheInstance","getRedisKey","lua","args","eval","CacheRedis","disableTransactionCompensate","SymbolCacheSceneProviders","Symbol","clearAllCacheSceneProviders","meta","HmrCaptchaProvider","reload","_beanOptions","Hmr","HmrCaptchaScene","DtoCaptchaData","constructor","Api","field","prototype","z","string","v","optional","Dto","DtoCaptchaVerify","required","ControllerCaptcha","Web","post","Passport","public","__param","Arg","Controller","isProd","ScopeModuleACaptcha","BeanScopeBase","Scope","locales","locale_en_us","locale_zh_cn","$locale","$makeLocaleMagic","CaptchaProvider","createBeanDecorator","CaptchaScene"],"mappings":"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"}
|
package/dist/lib/captchaLua.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const captchaCasLua = "\nlocal current = redis.call('GET', KEYS[1])\nif current ~= ARGV[1] then return 0 end\nif ARGV[2] == '' then\n redis.call('DEL', KEYS[1])\nelse\n local ttl = tonumber(ARGV[3])\n if ttl > 0 then\n redis.call('SET', KEYS[1], ARGV[2], 'PX', ttl)\n else\n redis.call('SET', KEYS[1], ARGV[2], 'KEEPTTL')\n end\nend\nreturn 1\n";
|
|
2
|
-
export declare const captchaReserveLua = "\nlocal time = redis.call('TIME')\nlocal now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)\nlocal policy = cjson.decode(ARGV[2])\nlocal cooldown = tonumber(redis.call('GET', KEYS[3]) or '0')\nlocal retryAt = cooldown\nlocal counters = {}\nfor i, budget in ipairs(policy.budgets) do\n local value = tonumber(redis.call('GET', KEYS[i + 3]) or '0')\n local deadline = (math.floor(now / budget.windowMs) + 1) * budget.windowMs\n local remaining = redis.call('PTTL', KEYS[i + 3])\n if remaining <= 0 then value = 0 end\n counters[i] = { value = value, deadline = deadline }\n if value >= budget.limit and deadline > retryAt then retryAt = deadline end\nend\nif retryAt > now then return { 0, '', retryAt, cooldown } end\nif redis.call('EXISTS', KEYS[1]) == 1 then return { -1 } end\nlocal data = cjson.decode(ARGV[3])\ndata.bound.expiresAt = now + policy.ttl\ndata.bound.resendAt = now + policy.cooldown\nlocal raw = cjson.encode(data)\nfor i, counter in ipairs(counters) do\n redis.call('SET', KEYS[i + 3], tostring(counter.value + 1))\n redis.call('PEXPIREAT', KEYS[i + 3], counter.deadline)\nend\nredis.call('SET', KEYS[1], raw)\nredis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)\nredis.call('SET', KEYS[2], ARGV[1])\nredis.call('PEXPIREAT', KEYS[2], math.max(data.bound.expiresAt, data.bound.resendAt))\nif policy.cooldown > 0 then\n redis.call('SET', KEYS[3], tostring(data.bound.resendAt))\n redis.call('PEXPIREAT', KEYS[3], data.bound.resendAt)\nend\nreturn { 1, raw, data.bound.expiresAt, data.bound.resendAt }\n";
|
|
3
|
-
export declare const captchaFinalizeLua = "\nlocal current = redis.call('GET', KEYS[1])\nif current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return 0 end\nlocal data = cjson.decode(current)\
|
|
2
|
+
export declare const captchaReserveLua = "\nlocal time = redis.call('TIME')\nlocal now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)\nlocal policy = cjson.decode(ARGV[2])\nlocal cooldown = tonumber(redis.call('GET', KEYS[3]) or '0')\nlocal retryAt = cooldown\nlocal counters = {}\nfor i, budget in ipairs(policy.budgets) do\n local value = tonumber(redis.call('GET', KEYS[i + 3]) or '0')\n local deadline = (math.floor(now / budget.windowMs) + 1) * budget.windowMs\n local remaining = redis.call('PTTL', KEYS[i + 3])\n if remaining <= 0 then value = 0 end\n counters[i] = { value = value, deadline = deadline }\n if value >= budget.limit and deadline > retryAt then retryAt = deadline end\nend\nif retryAt > now then return { 0, '', retryAt, cooldown, now } end\nif redis.call('EXISTS', KEYS[1]) == 1 then return { -1, '', 0, 0, now } end\nlocal data = cjson.decode(ARGV[3])\ndata.bound.expiresAt = now + policy.ttl\ndata.bound.resendAt = now + policy.cooldown\nlocal raw = cjson.encode(data)\nfor i, counter in ipairs(counters) do\n redis.call('SET', KEYS[i + 3], tostring(counter.value + 1))\n redis.call('PEXPIREAT', KEYS[i + 3], counter.deadline)\nend\nredis.call('SET', KEYS[1], raw)\nredis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)\nredis.call('SET', KEYS[2], ARGV[1])\nredis.call('PEXPIREAT', KEYS[2], math.max(data.bound.expiresAt, data.bound.resendAt))\nif policy.cooldown > 0 then\n redis.call('SET', KEYS[3], tostring(data.bound.resendAt))\n redis.call('PEXPIREAT', KEYS[3], data.bound.resendAt)\nend\nreturn { 1, raw, data.bound.expiresAt, data.bound.resendAt, now }\n";
|
|
3
|
+
export declare const captchaFinalizeLua = "\nlocal time = redis.call('TIME')\nlocal now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)\nlocal current = redis.call('GET', KEYS[1])\nif current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return { 0, now } end\nlocal data = cjson.decode(current)\nif data.bound.state ~= 'pending' or data.bound.expiresAt <= now then return { 0, now } end\nif ARGV[3] == '' then\n redis.call('DEL', KEYS[1])\nelse\n redis.call('SET', KEYS[1], ARGV[3])\n redis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)\nend\nreturn { 1, now }\n";
|
|
4
4
|
export declare const captchaConsumeLua = "\nlocal current = redis.call('GET', KEYS[1])\nif current ~= ARGV[1] then return -1 end\nif redis.call('GET', KEYS[2]) ~= ARGV[2] then return 0 end\nlocal data = cjson.decode(current)\nlocal time = redis.call('TIME')\nlocal now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)\nif data.bound.state ~= 'active' or data.bound.expiresAt <= now or data.bound.attemptsRemaining <= 0 then\n return 0\nend\nif ARGV[3] == '1' or data.bound.attemptsRemaining == 1 then\n redis.call('DEL', KEYS[1])\nelse\n redis.call('SET', KEYS[1], ARGV[4])\n redis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)\nend\nreturn 1\n";
|
|
5
5
|
//# sourceMappingURL=captchaLua.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captchaLua.d.ts","sourceRoot":"","sources":["../../src/lib/captchaLua.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,iVAczB,CAAC;AAEF,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"captchaLua.d.ts","sourceRoot":"","sources":["../../src/lib/captchaLua.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,iVAczB,CAAC;AAEF,eAAO,MAAM,iBAAiB,4iDAkC7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,gjBAc9B,CAAC;AAIF,eAAO,MAAM,iBAAiB,unBAiB7B,CAAC"}
|
package/dist/types/captcha.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/types/captcha.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,MAAM,CAAC;AAEd,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,mBAAmB,CAAC;IACjC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,eAAe,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,sBAAsB,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,kBAAkB;QACjC,OAAO,EAAE,KAAK,CAAC;KAChB;CACF"}
|
|
1
|
+
{"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/types/captcha.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,MAAM,CAAC;AAEd,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,mBAAmB,CAAC;IACjC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,eAAe,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,sBAAsB,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,kBAAkB;QACjC,OAAO,EAAE,KAAK,CAAC;KAChB;CACF"}
|
|
@@ -33,7 +33,7 @@ export interface ICaptchaProviderData<TOKEN = unknown, PAYLOAD = unknown> {
|
|
|
33
33
|
token: TOKEN;
|
|
34
34
|
payload: PAYLOAD;
|
|
35
35
|
outcome?: 'accepted' | 'rejected' | 'unknown';
|
|
36
|
-
/** Bound providers
|
|
36
|
+
/** Bound providers authorize transport disclosure subject to captcha.showToken. */
|
|
37
37
|
exposeToken?: boolean;
|
|
38
38
|
}
|
|
39
39
|
export interface IDecoratorCaptchaProviderOptions extends TypeOnionOptionsEnableSimple {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"captchaProvider.d.ts","sourceRoot":"","sources":["../../src/types/captchaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,WAAW,sBAAsB;CAAG;AAE1C,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,CACR,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,OAAO,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,mBAAmB,GACnC,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAClF,MAAM,CACJ,OAAO,EAAE,gCAAgC,EACzC,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,MAAM,CACJ,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACtE,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,
|
|
1
|
+
{"version":3,"file":"captchaProvider.d.ts","sourceRoot":"","sources":["../../src/types/captchaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAEtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,WAAW,sBAAsB;CAAG;AAE1C,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mFAAmF;AACnF,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACzE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,CACR,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,OAAO,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,mBAAmB,GACnC,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;IAClF,MAAM,CACJ,OAAO,EAAE,gCAAgC,EACzC,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,MAAM,CACJ,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO;IACtE,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC9C,mFAAmF;IACnF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gCAAiC,SAAQ,4BAA4B;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAiB,SAAS;QACxB,eAAe,EAAE,YAAY,CAAC,sBAAsB,CAAC,CAAC;KACvD;CACF;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,YAAY;QAC3B,eAAe,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;KACpD;IAED,UAAiB,gBAAgB;QAC/B,eAAe,EAAE,KAAK,CAAC;KACxB;CACF"}
|
package/package.json
CHANGED
package/src/bean/bean.captcha.ts
CHANGED
|
@@ -75,6 +75,7 @@ export class BeanCaptcha extends BeanBase {
|
|
|
75
75
|
provider: provider.name,
|
|
76
76
|
payload: undefined,
|
|
77
77
|
status: 'limited',
|
|
78
|
+
serverNow: reservation.serverNow,
|
|
78
79
|
resendAt: reservation.resendAt || undefined,
|
|
79
80
|
retryAt: reservation.retryAt,
|
|
80
81
|
};
|
|
@@ -89,17 +90,25 @@ export class BeanCaptcha extends BeanBase {
|
|
|
89
90
|
// A reservation authorizes exactly one external attempt. Never retry sends.
|
|
90
91
|
captcha = await beanInstance.create(provider.options, context);
|
|
91
92
|
} catch {
|
|
92
|
-
await cache.finalizeBound(id, snapshot);
|
|
93
|
-
return {
|
|
93
|
+
const finalized = await cache.finalizeBound(id, snapshot);
|
|
94
|
+
return {
|
|
95
|
+
id: '',
|
|
96
|
+
provider: provider.name,
|
|
97
|
+
payload: undefined,
|
|
98
|
+
status: 'unknown',
|
|
99
|
+
serverNow: finalized.serverNow,
|
|
100
|
+
...timing,
|
|
101
|
+
};
|
|
94
102
|
}
|
|
95
103
|
const outcome = captcha.outcome ?? 'accepted';
|
|
96
104
|
if (outcome !== 'accepted' || captcha.token === undefined || captcha.token === null) {
|
|
97
|
-
await cache.finalizeBound(id, snapshot);
|
|
105
|
+
const finalized = await cache.finalizeBound(id, snapshot);
|
|
98
106
|
return {
|
|
99
107
|
id: '',
|
|
100
108
|
provider: provider.name,
|
|
101
109
|
payload: undefined,
|
|
102
110
|
status: outcome === 'rejected' ? 'rejected' : 'unknown',
|
|
111
|
+
serverNow: finalized.serverNow,
|
|
103
112
|
...timing,
|
|
104
113
|
};
|
|
105
114
|
}
|
|
@@ -109,17 +118,27 @@ export class BeanCaptcha extends BeanBase {
|
|
|
109
118
|
bound: { ...snapshot.data.bound!, state: 'active', version: 1 },
|
|
110
119
|
};
|
|
111
120
|
const finalized = await cache.finalizeBound(id, snapshot, active);
|
|
112
|
-
if (!finalized)
|
|
113
|
-
return {
|
|
121
|
+
if (!finalized.finalized) {
|
|
122
|
+
return {
|
|
123
|
+
id: '',
|
|
124
|
+
provider: provider.name,
|
|
125
|
+
payload: undefined,
|
|
126
|
+
status: 'unknown',
|
|
127
|
+
serverNow: finalized.serverNow,
|
|
128
|
+
...timing,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
114
131
|
const result: ICaptchaData = {
|
|
115
132
|
id,
|
|
116
133
|
provider: provider.name,
|
|
117
134
|
payload: captcha.payload,
|
|
118
135
|
status: 'accepted',
|
|
136
|
+
serverNow: finalized.serverNow,
|
|
119
137
|
...timing,
|
|
120
138
|
};
|
|
121
|
-
//
|
|
122
|
-
if (captcha.exposeToken === true)
|
|
139
|
+
// Bound providers must also authorize disclosure for their actual transport.
|
|
140
|
+
if (this.scope.config.captcha.showToken && captcha.exposeToken === true)
|
|
141
|
+
result.token = captcha.token;
|
|
123
142
|
return result;
|
|
124
143
|
}
|
|
125
144
|
|
|
@@ -86,15 +86,21 @@ export class CacheRedisCaptcha extends ServiceCacheRedisBase<
|
|
|
86
86
|
captchaReserveLua,
|
|
87
87
|
[id, keys.pointer, keys.cooldown, ...keys.budgets],
|
|
88
88
|
[id, JSON.stringify(policy), JSON.stringify(data)],
|
|
89
|
-
)) as [number, string, number, number];
|
|
89
|
+
)) as [number, string, number, number, number];
|
|
90
90
|
if (result[0] === -1) throw new Error('captcha identity collision');
|
|
91
91
|
if (result[0] === 0) {
|
|
92
|
-
return {
|
|
92
|
+
return {
|
|
93
|
+
reserved: false as const,
|
|
94
|
+
retryAt: result[2],
|
|
95
|
+
resendAt: result[3],
|
|
96
|
+
serverNow: result[4],
|
|
97
|
+
};
|
|
93
98
|
}
|
|
94
99
|
if (result[0] !== 1 || !result[1]) throw new Error('invalid captcha reservation');
|
|
95
100
|
return {
|
|
96
101
|
reserved: true as const,
|
|
97
102
|
snapshot: { raw: result[1], data: JSON.parse(result[1]) as ICaptchaDataCache },
|
|
103
|
+
serverNow: result[4],
|
|
98
104
|
};
|
|
99
105
|
}
|
|
100
106
|
|
|
@@ -102,13 +108,12 @@ export class CacheRedisCaptcha extends ServiceCacheRedisBase<
|
|
|
102
108
|
this._validateBoundId(id);
|
|
103
109
|
const scope = snapshot.data.bound!.scope;
|
|
104
110
|
const pointer = `${this.boundPrefix()}current:${scope}`;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
);
|
|
111
|
+
const result = (await this._eval(
|
|
112
|
+
captchaFinalizeLua,
|
|
113
|
+
[id, pointer],
|
|
114
|
+
[snapshot.raw, id, data === undefined ? '' : JSON.stringify(data)],
|
|
115
|
+
)) as [number, number];
|
|
116
|
+
return { finalized: result[0] === 1, serverNow: result[1] };
|
|
112
117
|
}
|
|
113
118
|
|
|
114
119
|
/** -1 asks the verifier to reread a competing wrong-attempt update. */
|
package/src/lib/captchaLua.ts
CHANGED
|
@@ -31,8 +31,8 @@ for i, budget in ipairs(policy.budgets) do
|
|
|
31
31
|
counters[i] = { value = value, deadline = deadline }
|
|
32
32
|
if value >= budget.limit and deadline > retryAt then retryAt = deadline end
|
|
33
33
|
end
|
|
34
|
-
if retryAt > now then return { 0, '', retryAt, cooldown } end
|
|
35
|
-
if redis.call('EXISTS', KEYS[1]) == 1 then return { -1 } end
|
|
34
|
+
if retryAt > now then return { 0, '', retryAt, cooldown, now } end
|
|
35
|
+
if redis.call('EXISTS', KEYS[1]) == 1 then return { -1, '', 0, 0, now } end
|
|
36
36
|
local data = cjson.decode(ARGV[3])
|
|
37
37
|
data.bound.expiresAt = now + policy.ttl
|
|
38
38
|
data.bound.resendAt = now + policy.cooldown
|
|
@@ -49,23 +49,23 @@ if policy.cooldown > 0 then
|
|
|
49
49
|
redis.call('SET', KEYS[3], tostring(data.bound.resendAt))
|
|
50
50
|
redis.call('PEXPIREAT', KEYS[3], data.bound.resendAt)
|
|
51
51
|
end
|
|
52
|
-
return { 1, raw, data.bound.expiresAt, data.bound.resendAt }
|
|
52
|
+
return { 1, raw, data.bound.expiresAt, data.bound.resendAt, now }
|
|
53
53
|
`;
|
|
54
54
|
|
|
55
55
|
export const captchaFinalizeLua = `
|
|
56
|
-
local current = redis.call('GET', KEYS[1])
|
|
57
|
-
if current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return 0 end
|
|
58
|
-
local data = cjson.decode(current)
|
|
59
56
|
local time = redis.call('TIME')
|
|
60
57
|
local now = tonumber(time[1]) * 1000 + math.floor(tonumber(time[2]) / 1000)
|
|
61
|
-
|
|
58
|
+
local current = redis.call('GET', KEYS[1])
|
|
59
|
+
if current ~= ARGV[1] or redis.call('GET', KEYS[2]) ~= ARGV[2] then return { 0, now } end
|
|
60
|
+
local data = cjson.decode(current)
|
|
61
|
+
if data.bound.state ~= 'pending' or data.bound.expiresAt <= now then return { 0, now } end
|
|
62
62
|
if ARGV[3] == '' then
|
|
63
63
|
redis.call('DEL', KEYS[1])
|
|
64
64
|
else
|
|
65
65
|
redis.call('SET', KEYS[1], ARGV[3])
|
|
66
66
|
redis.call('PEXPIREAT', KEYS[1], data.bound.expiresAt)
|
|
67
67
|
end
|
|
68
|
-
return 1
|
|
68
|
+
return { 1, now }
|
|
69
69
|
`;
|
|
70
70
|
|
|
71
71
|
// Verification happens in the provider. Only the caller holding this exact active
|
package/src/types/captcha.ts
CHANGED
|
@@ -50,7 +50,7 @@ export interface ICaptchaProviderData<TOKEN = unknown, PAYLOAD = unknown> {
|
|
|
50
50
|
token: TOKEN;
|
|
51
51
|
payload: PAYLOAD;
|
|
52
52
|
outcome?: 'accepted' | 'rejected' | 'unknown';
|
|
53
|
-
/** Bound providers
|
|
53
|
+
/** Bound providers authorize transport disclosure subject to captcha.showToken. */
|
|
54
54
|
exposeToken?: boolean;
|
|
55
55
|
}
|
|
56
56
|
|