@nestlab/google-recaptcha 3.5.0 → 3.6.0
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/CHANGELOG.md +6 -0
- package/README.md +1 -0
- package/guards/google-recaptcha.guard.js +5 -2
- package/guards/google-recaptcha.guard.js.map +1 -1
- package/interfaces/google-recaptcha-guard-options.d.ts +2 -1
- package/interfaces/verify-response-decorator-options.d.ts +3 -1
- package/interfaces/verify-response-enterprise.d.ts +1 -0
- package/models/recaptcha-verification-result.d.ts +2 -0
- package/models/recaptcha-verification-result.js +2 -0
- package/models/recaptcha-verification-result.js.map +1 -1
- package/package.json +7 -7
- package/services/validators/google-recaptcha-enterprise.validator.js +4 -2
- package/services/validators/google-recaptcha-enterprise.validator.js.map +1 -1
- package/services/validators/google-recaptcha.validator.js +5 -3
- package/services/validators/google-recaptcha.validator.js.map +1 -1
- package/types.d.ts +4 -3
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -61,6 +61,7 @@ The list of changes made in the project can be found in the [CHANGELOG.md](./CHA
|
|
|
61
61
|
| `network` | Optional.<br> Type: `GoogleRecaptchaNetwork` \| `string`<br> Default: `GoogleRecaptchaNetwork.Google` <br> If your server has trouble connecting to https://google.com then you can set networks:<br> `GoogleRecaptchaNetwork.Google` = 'https://www.google.com/recaptcha/api/siteverify'<br>`GoogleRecaptchaNetwork.Recaptcha` = 'https://recaptcha.net/recaptcha/api/siteverify'<br> or set any api url |
|
|
62
62
|
| `score` | Optional.<br> Type: `number` \| `(score: number) => boolean`<br> Score validator for reCAPTCHA v3 or enterprise. <br> `number` - minimum available score. <br> `(score: number) => boolean` - function with custom validation rules. |
|
|
63
63
|
| `actions` | Optional.<br> Type: `string[]`<br> Available action list for reCAPTCHA v3 or enterprise. <br> You can make this check stricter by passing the action property parameter to `@Recaptcha(...)` decorator. |
|
|
64
|
+
| `remoteIp` | Optional.<br> Type: `(request) => string`<br> A function that returns a remote IP address from the request |
|
|
64
65
|
| `axiosConfig` | Optional.<br> Type: `AxiosRequestConfig`<br> Allows to setup proxy, response timeout, https agent etc... |
|
|
65
66
|
| `global` | Optional.<br> Type: `boolean` <br> Default: `false` Defines a module in the [global scope](https://docs.nestjs.com/modules#global-modules). |
|
|
66
67
|
|
|
@@ -36,11 +36,14 @@ let GoogleRecaptchaGuard = class GoogleRecaptchaGuard {
|
|
|
36
36
|
return true;
|
|
37
37
|
}
|
|
38
38
|
const options = this.reflector.get(provider_declarations_1.RECAPTCHA_VALIDATION_OPTIONS, context.getHandler());
|
|
39
|
-
const response =
|
|
39
|
+
const [response, remoteIp] = await Promise.all([
|
|
40
|
+
(options === null || options === void 0 ? void 0 : options.response) ? await options.response(request) : await this.options.response(request),
|
|
41
|
+
(options === null || options === void 0 ? void 0 : options.remoteIp) ? await options.remoteIp(request) : await this.options.remoteIp && this.options.remoteIp(request),
|
|
42
|
+
]);
|
|
40
43
|
const score = (options === null || options === void 0 ? void 0 : options.score) || this.options.score;
|
|
41
44
|
const action = options === null || options === void 0 ? void 0 : options.action;
|
|
42
45
|
const validator = this.validatorResolver.resolve();
|
|
43
|
-
request.recaptchaValidationResult = await validator.validate({ response, score, action });
|
|
46
|
+
request.recaptchaValidationResult = await validator.validate({ response, remoteIp, score, action });
|
|
44
47
|
if (this.options.debug) {
|
|
45
48
|
const loggerCtx = this.resolveLogContext(validator);
|
|
46
49
|
this.logger.debug(request.recaptchaValidationResult.toObject(), `${loggerCtx}.result`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-recaptcha.guard.js","sourceRoot":"","sources":["../../src/guards/google-recaptcha.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA2F;AAC3F,oEAA6G;AAC7G,yFAAoF;AACpF,uCAAyC;AACzC,uFAAkF;AAGlF,2FAAsF;AACtF,gFAA2E;AAE3E,wHAAkH;AAI3G,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAChC,YACkB,SAAoB,EACpB,eAAyC,EACzC,iBAA6C,EACnB,MAAc,EACb,OAAqC;QAJhE,cAAS,GAAT,SAAS,CAAW;QACpB,oBAAe,GAAf,eAAe,CAA0B;QACzC,sBAAiB,GAAjB,iBAAiB,CAA4B;QACnB,WAAM,GAAN,MAAM,CAAQ;QACb,YAAO,GAAP,OAAO,CAA8B;IAC/E,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QAC1C,MAAM,OAAO,GAAkB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAErE,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEpH,IAAI,IAAI,EAAE;YACT,OAAO,IAAI,CAAC;SACZ;QAED,MAAM,OAAO,GAAmC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,oDAA4B,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAEvH,MAAM,QAAQ,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAC,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"google-recaptcha.guard.js","sourceRoot":"","sources":["../../src/guards/google-recaptcha.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { RecaptchaResponseProvider, ScoreValidator } from
|
|
1
|
+
import { RecaptchaRemoteIpProvider, RecaptchaResponseProvider, ScoreValidator } from "../types";
|
|
2
2
|
export interface GoogleRecaptchaGuardOptions {
|
|
3
3
|
response: RecaptchaResponseProvider;
|
|
4
|
+
remoteIp?: RecaptchaRemoteIpProvider;
|
|
4
5
|
skipIf?: boolean | (<Req = unknown>(request: Req) => boolean | Promise<boolean>);
|
|
5
6
|
score?: ScoreValidator;
|
|
6
7
|
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { RecaptchaResponseProvider, ScoreValidator } from
|
|
1
|
+
import { RecaptchaRemoteIpProvider, RecaptchaResponseProvider, ScoreValidator } from "../types";
|
|
2
2
|
export interface VerifyResponseDecoratorOptions {
|
|
3
3
|
response?: RecaptchaResponseProvider;
|
|
4
|
+
remoteIp?: RecaptchaRemoteIpProvider;
|
|
4
5
|
score?: ScoreValidator;
|
|
5
6
|
action?: string;
|
|
6
7
|
}
|
|
7
8
|
export interface VerifyResponseOptions {
|
|
8
9
|
response: string;
|
|
10
|
+
remoteIp?: string;
|
|
9
11
|
score?: ScoreValidator;
|
|
10
12
|
action?: string;
|
|
11
13
|
}
|
|
@@ -7,12 +7,14 @@ export interface RecaptchaVerificationResultOptions<Res> {
|
|
|
7
7
|
hostname: string;
|
|
8
8
|
action?: string;
|
|
9
9
|
score?: number;
|
|
10
|
+
remoteIp?: string;
|
|
10
11
|
errors: ErrorCode[];
|
|
11
12
|
}
|
|
12
13
|
export declare class RecaptchaVerificationResult<Res = LiteralObject> {
|
|
13
14
|
private readonly options;
|
|
14
15
|
readonly success: boolean;
|
|
15
16
|
readonly hostname: string;
|
|
17
|
+
readonly remoteIp: string | undefined;
|
|
16
18
|
readonly action: string | undefined;
|
|
17
19
|
readonly score: number | undefined;
|
|
18
20
|
readonly nativeResponse: Res;
|
|
@@ -7,6 +7,7 @@ class RecaptchaVerificationResult {
|
|
|
7
7
|
this.success = options.success;
|
|
8
8
|
this.hostname = options.hostname;
|
|
9
9
|
this.action = options.action;
|
|
10
|
+
this.remoteIp = options.remoteIp;
|
|
10
11
|
this.score = options.score;
|
|
11
12
|
this.errors = options.errors;
|
|
12
13
|
this.nativeResponse = options.nativeResponse;
|
|
@@ -17,6 +18,7 @@ class RecaptchaVerificationResult {
|
|
|
17
18
|
hostname: this.hostname,
|
|
18
19
|
action: this.action,
|
|
19
20
|
score: this.score,
|
|
21
|
+
remoteIp: this.remoteIp,
|
|
20
22
|
errors: this.errors,
|
|
21
23
|
nativeResponse: this.nativeResponse,
|
|
22
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recaptcha-verification-result.js","sourceRoot":"","sources":["../../src/models/recaptcha-verification-result.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"recaptcha-verification-result.js","sourceRoot":"","sources":["../../src/models/recaptcha-verification-result.ts"],"names":[],"mappings":";;;AAcA,MAAa,2BAA2B;IAevC,YAA6B,OAAgD;QAAhD,YAAO,GAAP,OAAO,CAAyC;QAC5E,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC9C,CAAC;IAED,QAAQ;QACP,OAAO;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,cAAc,EAAE,IAAI,CAAC,cAAc;SACnC,CAAC;IACH,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,0BAA0B;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAE/B,OAAO,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IACpC,CAAC;CACD;AA9CD,kEA8CC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestlab/google-recaptcha",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.0",
|
|
4
4
|
"description": "Google recaptcha module for NestJS.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nestjs",
|
|
@@ -43,13 +43,13 @@
|
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@nestjs/apollo": "^12.0.
|
|
46
|
+
"@nestjs/apollo": "^12.0.9",
|
|
47
47
|
"@nestjs/axios": "^3.0.0",
|
|
48
|
-
"@nestjs/common": "^10.
|
|
49
|
-
"@nestjs/core": "^10.
|
|
50
|
-
"@nestjs/graphql": "^12.0.
|
|
51
|
-
"@nestjs/platform-express": "^10.
|
|
52
|
-
"@nestjs/testing": "^10.
|
|
48
|
+
"@nestjs/common": "^10.2.7",
|
|
49
|
+
"@nestjs/core": "^10.2.7",
|
|
50
|
+
"@nestjs/graphql": "^12.0.9",
|
|
51
|
+
"@nestjs/platform-express": "^10.2.7",
|
|
52
|
+
"@nestjs/testing": "^10.2.7",
|
|
53
53
|
"@types/express": "^4.17.13",
|
|
54
54
|
"@types/jest": "^29.0.0",
|
|
55
55
|
"@types/node": "^18.7.14",
|
|
@@ -32,7 +32,7 @@ let GoogleRecaptchaEnterpriseValidator = class GoogleRecaptchaEnterpriseValidato
|
|
|
32
32
|
}
|
|
33
33
|
async validate(options) {
|
|
34
34
|
var _a, _b, _c, _d;
|
|
35
|
-
const [result, errorDetails] = await this.verifyResponse(options.response, options.action);
|
|
35
|
+
const [result, errorDetails] = await this.verifyResponse(options.response, options.action, options.remoteIp);
|
|
36
36
|
const errors = [];
|
|
37
37
|
let success = ((_a = result === null || result === void 0 ? void 0 : result.tokenProperties) === null || _a === void 0 ? void 0 : _a.valid) || false;
|
|
38
38
|
if (!errorDetails) {
|
|
@@ -60,18 +60,20 @@ let GoogleRecaptchaEnterpriseValidator = class GoogleRecaptchaEnterpriseValidato
|
|
|
60
60
|
success,
|
|
61
61
|
errors,
|
|
62
62
|
nativeResponse: result,
|
|
63
|
+
remoteIp: options.remoteIp,
|
|
63
64
|
score: (_b = result === null || result === void 0 ? void 0 : result.riskAnalysis) === null || _b === void 0 ? void 0 : _b.score,
|
|
64
65
|
action: (_c = result === null || result === void 0 ? void 0 : result.tokenProperties) === null || _c === void 0 ? void 0 : _c.action,
|
|
65
66
|
hostname: ((_d = result === null || result === void 0 ? void 0 : result.tokenProperties) === null || _d === void 0 ? void 0 : _d.hostname) || '',
|
|
66
67
|
});
|
|
67
68
|
}
|
|
68
|
-
verifyResponse(response, expectedAction) {
|
|
69
|
+
verifyResponse(response, expectedAction, remoteIp) {
|
|
69
70
|
const projectId = this.options.enterprise.projectId;
|
|
70
71
|
const body = {
|
|
71
72
|
event: {
|
|
72
73
|
expectedAction,
|
|
73
74
|
siteKey: this.options.enterprise.siteKey,
|
|
74
75
|
token: response,
|
|
76
|
+
userIpAddress: remoteIp,
|
|
75
77
|
},
|
|
76
78
|
};
|
|
77
79
|
const url = `https://recaptchaenterprise.googleapis.com/v1/projects/${projectId}/assessments`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-recaptcha-enterprise.validator.js","sourceRoot":"","sources":["../../../src/services/validators/google-recaptcha-enterprise.validator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,uEAA4G;AAG5G,+FAAyF;AACzF,8FAAyF;AACzF,uDAAmD;AAEnD,4GAAsG;AACtG,mFAA8E;AAE9E,oFAA+E;AAC/E,iEAA4D;AAOrD,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,sEAA0D;IAGjH,YACoD,KAAoB,EAC5B,MAAc,EAC9B,OAAqC,EAC/C,2BAAwD;QAEzE,KAAK,CAAC,OAAO,CAAC,CAAC;QALoC,UAAK,GAAL,KAAK,CAAe;QAC5B,WAAM,GAAN,MAAM,CAAQ;QAExC,gCAA2B,GAA3B,2BAA2B,CAA6B;QANzD,YAAO,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IASlE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA8B;;QAC5C,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"google-recaptcha-enterprise.validator.js","sourceRoot":"","sources":["../../../src/services/validators/google-recaptcha-enterprise.validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,11 +36,12 @@ let GoogleRecaptchaValidator = class GoogleRecaptchaValidator extends abstract_g
|
|
|
36
36
|
* @param {VerifyResponseOptions} options
|
|
37
37
|
*/
|
|
38
38
|
async validate(options) {
|
|
39
|
-
const result = await this.verifyResponse(options.response);
|
|
39
|
+
const result = await this.verifyResponse(options.response, options.remoteIp);
|
|
40
40
|
if (!this.isUseV3(result)) {
|
|
41
41
|
const resV2 = result;
|
|
42
42
|
return new recaptcha_verification_result_1.RecaptchaVerificationResult({
|
|
43
43
|
nativeResponse: resV2,
|
|
44
|
+
remoteIp: options.remoteIp,
|
|
44
45
|
score: undefined,
|
|
45
46
|
action: undefined,
|
|
46
47
|
errors: resV2.errors,
|
|
@@ -59,6 +60,7 @@ let GoogleRecaptchaValidator = class GoogleRecaptchaValidator extends abstract_g
|
|
|
59
60
|
const nativeResponse = Object.assign({}, result);
|
|
60
61
|
return new recaptcha_verification_result_1.RecaptchaVerificationResult({
|
|
61
62
|
nativeResponse: nativeResponse,
|
|
63
|
+
remoteIp: options.remoteIp,
|
|
62
64
|
score: result.score,
|
|
63
65
|
errors: result.errors,
|
|
64
66
|
success: result.success,
|
|
@@ -66,8 +68,8 @@ let GoogleRecaptchaValidator = class GoogleRecaptchaValidator extends abstract_g
|
|
|
66
68
|
hostname: result.hostname,
|
|
67
69
|
});
|
|
68
70
|
}
|
|
69
|
-
verifyResponse(response) {
|
|
70
|
-
const body = qs.stringify({ secret: this.options.secretKey, response });
|
|
71
|
+
verifyResponse(response, remoteIp) {
|
|
72
|
+
const body = qs.stringify({ secret: this.options.secretKey, response, remoteip: remoteIp });
|
|
71
73
|
const url = this.options.network || this.defaultNetwork;
|
|
72
74
|
const config = {
|
|
73
75
|
headers: this.headers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-recaptcha.validator.js","sourceRoot":"","sources":["../../../src/services/validators/google-recaptcha.validator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,uEAA4G;AAC5G,kCAAkC;AAElC,mFAA8E;AAG9E,uDAAmD;AACnD,4GAAsG;AAEtG,+FAAyF;AACzF,8FAAyF;AACzF,mFAA8E;AAC9E,iEAA4D;AAIrD,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,sEAAkD;IAK/F,YACoD,KAAoB,EAC5B,MAAc,EAC9B,OAAqC;QAEhE,KAAK,CAAC,OAAO,CAAC,CAAC;QAJoC,UAAK,GAAL,KAAK,CAAe;QAC5B,WAAM,GAAN,MAAM,CAAQ;QANzC,mBAAc,GAAG,iDAAsB,CAAC,MAAM,CAAC;QAE/C,YAAO,GAAG,EAAE,cAAc,EAAE,mCAAmC,EAAE,CAAC;IAQnF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,OAA8B;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAmB,OAAO,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"google-recaptcha.validator.js","sourceRoot":"","sources":["../../../src/services/validators/google-recaptcha.validator.ts"],"names":[],"mappings":"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"}
|
package/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ContextType } from '@nestjs/common';
|
|
2
|
-
export type RecaptchaResponseProvider = (req: any) => string | Promise<string>;
|
|
3
|
-
export type
|
|
4
|
-
export type
|
|
2
|
+
export declare type RecaptchaResponseProvider = (req: any) => string | Promise<string>;
|
|
3
|
+
export declare type RecaptchaRemoteIpProvider = (req: any) => string | Promise<string>;
|
|
4
|
+
export declare type ScoreValidator = number | ((score: number) => boolean);
|
|
5
|
+
export declare type RecaptchaContextType = ContextType | 'graphql';
|