@prosopo/provider 3.0.5 → 3.1.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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @prosopo/provider
2
2
 
3
+ ## 3.1.0
4
+ ### Minor Changes
5
+
6
+ - 9e18fca: Make resolver easier to use
7
+
8
+ ## 3.0.6
9
+ ### Patch Changes
10
+
11
+ - 9671152: uuid
12
+ - Updated dependencies [9671152]
13
+ - @prosopo/api-express-router@3.0.3
14
+
3
15
  ## 3.0.5
4
16
  ### Patch Changes
5
17
 
@@ -1,10 +1,37 @@
1
1
  import type { Logger } from "@prosopo/common";
2
- import { type ResolveAccessPolicy } from "@prosopo/user-access-policy";
2
+ import { type AccessRulesStorage } from "@prosopo/user-access-policy";
3
3
  import type { NextFunction, Request, Response } from "express";
4
+ export declare const getRequestUserScope: (requestHeaders: Record<string, unknown>, ja4?: string, ip?: string, user?: string) => {
5
+ ipAddress: bigint;
6
+ userAgent?: string | undefined;
7
+ ja4Hash?: string | undefined;
8
+ userId?: string | undefined;
9
+ };
10
+ export declare const getPrioritisedAccessRule: (userAccessRulesStorage: AccessRulesStorage, userScope: {
11
+ [key: string]: bigint | string;
12
+ }, clientId?: string) => Promise<{
13
+ type?: any;
14
+ captchaType?: any;
15
+ userId?: string | undefined;
16
+ clientId?: string | undefined;
17
+ description?: any;
18
+ solvedImagesCount?: any;
19
+ imageThreshold?: any;
20
+ powDifficulty?: any;
21
+ unsolvedImagesCount?: any;
22
+ frictionlessScore?: any;
23
+ ruleGroupId?: string | undefined;
24
+ numericIp?: bigint | undefined;
25
+ numericIpMaskMin?: bigint | undefined;
26
+ numericIpMaskMax?: bigint | undefined;
27
+ ja4Hash?: string | undefined;
28
+ headersHash?: string | undefined;
29
+ userAgentHash?: string | undefined;
30
+ }[]>;
4
31
  export declare class BlacklistRequestInspector {
5
- private readonly resolveAccessPolicy;
32
+ private readonly userAccessRulesStorage;
6
33
  private readonly environmentReadinessWaiter;
7
- constructor(resolveAccessPolicy: ResolveAccessPolicy, environmentReadinessWaiter: () => Promise<void>);
34
+ constructor(userAccessRulesStorage: AccessRulesStorage, environmentReadinessWaiter: () => Promise<void>);
8
35
  abortRequestForBlockedUsers(request: Request, res: Response, next: NextFunction): Promise<void>;
9
36
  shouldAbortRequest(requestedRoute: string, rawIp: string, ja4: string, requestHeaders: Record<string, unknown>, requestBody: Record<string, unknown>, logger: Logger): Promise<boolean>;
10
37
  protected isApiUnrelatedRoute(url: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"blacklistRequestInspector.d.ts","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EACN,KAAK,mBAAmB,EAExB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,qBAAa,yBAAyB;IAEpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;gBAD1B,mBAAmB,EAAE,mBAAmB,EACxC,0BAA0B,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAGpD,2BAA2B,CACvC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC;IAwBH,kBAAkB,CAC9B,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC;IAsDnB,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInD,SAAS,CAAC,qBAAqB,CAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC;QACF,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B;IAcD,SAAS,CAAC,cAAc,CACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACT,OAAO;CAGV"}
1
+ {"version":3,"file":"blacklistRequestInspector.d.ts","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAEN,KAAK,kBAAkB,EAGvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/D,eAAO,MAAM,mBAAmB,mBACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QACjC,MAAM,OACP,MAAM,SACJ,MAAM;;;;;CAYb,CAAC;AAEF,eAAO,MAAM,wBAAwB,2BACZ,kBAAkB,aAC/B;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAC/B,aACU,MAAM;;;;;;;;;;;;;;;;;;IAqCjB,CAAC;AAEF,qBAAa,yBAAyB;IAEpC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;gBAD1B,sBAAsB,EAAE,kBAAkB,EAC1C,0BAA0B,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAGpD,2BAA2B,CACvC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC;IA0BH,kBAAkB,CAC9B,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC;IAqDnB,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAInD,SAAS,CAAC,qBAAqB,CAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC;QACF,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B;IAcD,SAAS,CAAC,cAAc,CACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACT,OAAO;CAGV"}
@@ -1,14 +1,49 @@
1
1
  import { ApiPrefix } from "@prosopo/types";
2
- import { ScopeMatch, } from "@prosopo/user-access-policy";
3
- import { AccessPolicyType } from "@prosopo/user-access-policy";
4
- import { getIPAddress } from "@prosopo/util";
2
+ import { AccessPolicyType, ScopeMatch, userScopeInputSchema, } from "@prosopo/user-access-policy";
3
+ import { getIPAddress, uniqueSubsets } from "@prosopo/util";
4
+ export const getRequestUserScope = (requestHeaders, ja4, ip, user) => {
5
+ const ipAddress = getIPAddress(ip || "");
6
+ const userAgent = requestHeaders["user-agent"]
7
+ ? requestHeaders["user-agent"].toString()
8
+ : undefined;
9
+ return {
10
+ ...(user && { userId: user }),
11
+ ...(ja4 && { ja4Hash: ja4 }),
12
+ ...(userAgent && { userAgent: userAgent }),
13
+ ...(ipAddress && { ipAddress: ipAddress.bigInt() }),
14
+ };
15
+ };
16
+ export const getPrioritisedAccessRule = async (userAccessRulesStorage, userScope, clientId) => {
17
+ const userScopeKeys = Object.keys(userScope).filter((key) => userScope[key] !== undefined);
18
+ const prioritisedUserScopes = uniqueSubsets(userScopeKeys).map((subset) => subset.reduce((acc, key) => {
19
+ acc[key] = userScope[key];
20
+ return acc;
21
+ }, {}));
22
+ const policyPromises = [];
23
+ for (const clientOrUndefined of [clientId, undefined]) {
24
+ for (const scope of prioritisedUserScopes) {
25
+ policyPromises.push(userAccessRulesStorage.findRules({
26
+ ...(clientOrUndefined && {
27
+ policyScope: {
28
+ clientId: clientOrUndefined,
29
+ },
30
+ policyScopeMatch: ScopeMatch.Exact,
31
+ }),
32
+ userScope: userScopeInputSchema.parse(scope),
33
+ userScopeMatch: ScopeMatch.Exact,
34
+ }));
35
+ }
36
+ }
37
+ return (await Promise.all(policyPromises)).flat();
38
+ };
5
39
  export class BlacklistRequestInspector {
6
- constructor(resolveAccessPolicy, environmentReadinessWaiter) {
7
- this.resolveAccessPolicy = resolveAccessPolicy;
40
+ constructor(userAccessRulesStorage, environmentReadinessWaiter) {
41
+ this.userAccessRulesStorage = userAccessRulesStorage;
8
42
  this.environmentReadinessWaiter = environmentReadinessWaiter;
9
43
  }
10
44
  async abortRequestForBlockedUsers(request, res, next) {
11
45
  const rawIp = request.ip || "";
46
+ console.log(`Raw IP: ${rawIp}`);
12
47
  request.logger.debug(() => ({
13
48
  data: { ja4: request.ja4 },
14
49
  }));
@@ -36,21 +71,15 @@ export class BlacklistRequestInspector {
36
71
  }
37
72
  await this.environmentReadinessWaiter();
38
73
  try {
39
- const userIpAddress = getIPAddress(rawIp);
40
74
  const { userId, clientId } = this.extractIdsFromRequest(requestHeaders, requestBody);
41
- const accessPolicy = await this.resolveAccessPolicy({
42
- policyScope: {
43
- clientId: clientId,
44
- },
45
- policyScopeMatch: ScopeMatch.Greedy,
46
- userScope: {
47
- userId: userId,
48
- numericIp: userIpAddress.bigInt(),
49
- ja4Hash: ja4,
50
- },
51
- userScopeMatch: ScopeMatch.Greedy,
52
- });
53
- return AccessPolicyType.Block === accessPolicy?.type;
75
+ const accessPolicies = await getPrioritisedAccessRule(this.userAccessRulesStorage, getRequestUserScope(requestHeaders, ja4, rawIp, userId), clientId);
76
+ if (!accessPolicies ||
77
+ accessPolicies.length === 0 ||
78
+ !accessPolicies[0]) {
79
+ return false;
80
+ }
81
+ const accessPolicy = accessPolicies[0];
82
+ return AccessPolicyType.Block === accessPolicy.type;
54
83
  }
55
84
  catch (err) {
56
85
  logger.error(() => ({
@@ -1 +1 @@
1
- {"version":3,"file":"blacklistRequestInspector.js","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blacklistRequestInspector.js","sourceRoot":"","sources":["../../src/api/blacklistRequestInspector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/api/block.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,eAAO,MAAM,eAAe,wBAAyB,mBAAmB,iIAwBvE,CAAC"}
1
+ {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/api/block.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,eAAO,MAAM,eAAe,wBAAyB,mBAAmB,iIAgBvE,CAAC"}
package/dist/api/block.js CHANGED
@@ -1,15 +1,10 @@
1
- import { getLogger, parseLogLevel } from "@prosopo/common";
2
- import { createAccessPolicyResolver } from "@prosopo/user-access-policy";
3
1
  import { BlacklistRequestInspector } from "./blacklistRequestInspector.js";
4
2
  export const blockMiddleware = (providerEnvironment) => {
5
- const logLevel = parseLogLevel(providerEnvironment.config.logLevel);
6
- const logger = getLogger(logLevel, "blockMiddleware");
7
3
  const userAccessRulesStorage = providerEnvironment
8
4
  .getDb()
9
5
  .getUserAccessRulesStorage();
10
6
  const environmentReadinessWaiter = providerEnvironment.isReady.bind(providerEnvironment);
11
- const resolveAccessPolicy = createAccessPolicyResolver(userAccessRulesStorage, logger);
12
- const blacklistRequestInspector = new BlacklistRequestInspector(resolveAccessPolicy, environmentReadinessWaiter);
7
+ const blacklistRequestInspector = new BlacklistRequestInspector(userAccessRulesStorage, environmentReadinessWaiter);
13
8
  return blacklistRequestInspector.abortRequestForBlockedUsers.bind(blacklistRequestInspector);
14
9
  };
15
10
  //# sourceMappingURL=block.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/api/block.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,mBAAwC,EAAE,EAAE;IAC3E,MAAM,QAAQ,GAAG,aAAa,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAEtD,MAAM,sBAAsB,GAAG,mBAAmB;SAChD,KAAK,EAAE;SACP,yBAAyB,EAAE,CAAC;IAE9B,MAAM,0BAA0B,GAC/B,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAEvD,MAAM,mBAAmB,GAAG,0BAA0B,CACrD,sBAAsB,EACtB,MAAM,CACN,CAAC;IAEF,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAC9D,mBAAmB,EACnB,0BAA0B,CAC1B,CAAC;IAEF,OAAO,yBAAyB,CAAC,2BAA2B,CAAC,IAAI,CAChE,yBAAyB,CACzB,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/api/block.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,mBAAwC,EAAE,EAAE;IAC3E,MAAM,sBAAsB,GAAG,mBAAmB;SAChD,KAAK,EAAE;SACP,yBAAyB,EAAE,CAAC;IAE9B,MAAM,0BAA0B,GAC/B,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAEvD,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAC9D,sBAAsB,EACtB,0BAA0B,CAC1B,CAAC;IAEF,OAAO,yBAAyB,CAAC,2BAA2B,CAAC,IAAI,CAChE,yBAAyB,CACzB,CAAC;AACH,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/api/captcha.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAO9D,OAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAc/C,wBAAgB,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CA6pB9D"}
1
+ {"version":3,"file":"captcha.d.ts","sourceRoot":"","sources":["../../src/api/captcha.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAO9D,OAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAe/C,wBAAgB,aAAa,CAAC,GAAG,EAAE,mBAAmB,GAAG,MAAM,CAmoB9D"}
@@ -2,11 +2,11 @@ import { handleErrors } from "@prosopo/api-express-router";
2
2
  import { ProsopoApiError } from "@prosopo/common";
3
3
  import { parseCaptchaAssets } from "@prosopo/datasets";
4
4
  import { ApiParams, CaptchaRequestBody, CaptchaSolutionBody, CaptchaType, ClientApiPaths, GetFrictionlessCaptchaChallengeRequestBody, GetPowCaptchaChallengeRequestBody, SubmitPowCaptchaSolutionBody, } from "@prosopo/types";
5
- import { ScopeMatch, createAccessPolicyResolver, } from "@prosopo/user-access-policy";
6
5
  import { flatten, getIPAddress } from "@prosopo/util";
7
6
  import express from "express";
8
7
  import { FrictionlessManager } from "../tasks/frictionless/frictionlessTasks.js";
9
8
  import { Tasks } from "../tasks/tasks.js";
9
+ import { getRequestUserScope } from "./blacklistRequestInspector.js";
10
10
  import { validateAddr, validateSiteKey } from "./validateAddress.js";
11
11
  const DEFAULT_FRICTIONLESS_THRESHOLD = 0.5;
12
12
  export function prosopoRouter(env) {
@@ -57,12 +57,8 @@ export function prosopoRouter(env) {
57
57
  logger: req.logger,
58
58
  }));
59
59
  }
60
- const userAccessPolicy = await tasks.imgCaptchaManager.getPrioritisedAccessPolicies(userAccessRulesStorage, dapp, {
61
- numericIp: ipAddress.bigInt(),
62
- userId: user,
63
- ja4Hash: req.ja4,
64
- userAgent: req.headers["user-agent"],
65
- });
60
+ const userScope = getRequestUserScope(flatten(req.headers), req.ja4, req.ip, user);
61
+ const userAccessPolicy = (await tasks.imgCaptchaManager.getPrioritisedAccessPolicies(userAccessRulesStorage, dapp, userScope))[0];
66
62
  const captchaConfig = {
67
63
  solved: {
68
64
  count: userAccessPolicy?.solvedImagesCount ||
@@ -209,7 +205,10 @@ export function prosopoRouter(env) {
209
205
  logger: req.logger,
210
206
  }));
211
207
  }
212
- const challenge = await tasks.powCaptchaManager.getPowCaptchaChallenge(user, dapp, origin, clientSettings?.settings?.powDifficulty);
208
+ const userScope = getRequestUserScope(flatten(req.headers), req.ja4, req.ip, user);
209
+ const userAccessPolicy = (await tasks.powCaptchaManager.getPrioritisedAccessPolicies(userAccessRulesStorage, dapp, userScope))[0];
210
+ const challenge = await tasks.powCaptchaManager.getPowCaptchaChallenge(user, dapp, origin, userAccessPolicy?.powDifficulty ||
211
+ clientSettings?.settings?.powDifficulty);
213
212
  await tasks.db.storePowCaptchaRecord(challenge.challenge, {
214
213
  requestedAtTimestamp: challenge.requestedAtTimestamp,
215
214
  userAccount: user,
@@ -342,56 +341,10 @@ export function prosopoRouter(env) {
342
341
  await tasks.frictionlessManager.scoreIncreaseTimestamp(timestamp, baseBotScore, botScore, tokenId);
343
342
  return res.json(await tasks.frictionlessManager.sendImageCaptcha(tokenId));
344
343
  }
345
- const ipAddress = getIPAddress(req.ip || "");
346
- const resolveAccessPolicy = createAccessPolicyResolver(userAccessRulesStorage, req.logger);
347
- const accessPolicy = await resolveAccessPolicy({
348
- policyScope: {
349
- clientId: dapp,
350
- },
351
- policyScopeMatch: ScopeMatch.Greedy,
352
- userScope: {
353
- userId: user,
354
- ja4Hash: req.ja4,
355
- numericIp: ipAddress.bigInt(),
356
- },
357
- userScopeMatch: ScopeMatch.Greedy,
358
- });
359
- const accessPolicies = await Promise.all([
360
- resolveAccessPolicy({
361
- userScope: {
362
- userId: user,
363
- ja4Hash: req.ja4,
364
- numericIp: ipAddress.bigInt(),
365
- },
366
- userScopeMatch: ScopeMatch.Exact,
367
- }),
368
- resolveAccessPolicy({
369
- policyScope: {
370
- clientId: dapp,
371
- },
372
- policyScopeMatch: ScopeMatch.Exact,
373
- userScope: {
374
- userId: user,
375
- ja4Hash: req.ja4,
376
- numericIp: ipAddress.bigInt(),
377
- },
378
- userScopeMatch: ScopeMatch.Exact,
379
- }),
380
- resolveAccessPolicy({
381
- policyScope: {
382
- clientId: dapp,
383
- },
384
- policyScopeMatch: ScopeMatch.Exact,
385
- userScope: {
386
- ja4Hash: req.ja4,
387
- numericIp: ipAddress.bigInt(),
388
- },
389
- userScopeMatch: ScopeMatch.Exact,
390
- }),
391
- ]);
392
- if (accessPolicy?.solvedImagesCount ||
393
- accessPolicy?.unsolvedImagesCount) {
394
- await tasks.frictionlessManager.scoreIncreaseAccessPolicy(accessPolicy, baseBotScore, botScore, tokenId);
344
+ const userScope = getRequestUserScope(flatten(req.headers), req.ja4, req.ip, user);
345
+ const userAccessPolicy = (await tasks.frictionlessManager.getPrioritisedAccessPolicies(userAccessRulesStorage, dapp, userScope))[0];
346
+ if (userAccessPolicy?.captchaType === CaptchaType.image) {
347
+ await tasks.frictionlessManager.scoreIncreaseAccessPolicy(userAccessPolicy, baseBotScore, botScore, tokenId);
395
348
  return res.json(await tasks.frictionlessManager.sendImageCaptcha(tokenId));
396
349
  }
397
350
  if (Number(botScore) > botThreshold) {
@@ -1 +1 @@
1
- {"version":3,"file":"captcha.js","sourceRoot":"","sources":["../../src/api/captcha.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"captcha.js","sourceRoot":"","sources":["../../src/api/captcha.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,56 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const types = require("@prosopo/types");
4
4
  const userAccessPolicy = require("@prosopo/user-access-policy");
5
5
  const util = require("@prosopo/util");
6
+ const getRequestUserScope = (requestHeaders, ja4, ip, user) => {
7
+ const ipAddress = util.getIPAddress(ip || "");
8
+ const userAgent = requestHeaders["user-agent"] ? requestHeaders["user-agent"].toString() : void 0;
9
+ return {
10
+ ...user && { userId: user },
11
+ ...ja4 && { ja4Hash: ja4 },
12
+ ...userAgent && { userAgent },
13
+ ...ipAddress && { ipAddress: ipAddress.bigInt() }
14
+ };
15
+ };
16
+ const getPrioritisedAccessRule = async (userAccessRulesStorage, userScope, clientId) => {
17
+ const userScopeKeys = Object.keys(userScope).filter(
18
+ (key) => userScope[key] !== void 0
19
+ );
20
+ const prioritisedUserScopes = util.uniqueSubsets(userScopeKeys).map(
21
+ (subset) => subset.reduce(
22
+ (acc, key) => {
23
+ acc[key] = userScope[key];
24
+ return acc;
25
+ },
26
+ {}
27
+ )
28
+ );
29
+ const policyPromises = [];
30
+ for (const clientOrUndefined of [clientId, void 0]) {
31
+ for (const scope of prioritisedUserScopes) {
32
+ policyPromises.push(
33
+ userAccessRulesStorage.findRules({
34
+ ...clientOrUndefined && {
35
+ policyScope: {
36
+ clientId: clientOrUndefined
37
+ },
38
+ policyScopeMatch: userAccessPolicy.ScopeMatch.Exact
39
+ },
40
+ userScope: userAccessPolicy.userScopeInputSchema.parse(scope),
41
+ userScopeMatch: userAccessPolicy.ScopeMatch.Exact
42
+ })
43
+ );
44
+ }
45
+ }
46
+ return (await Promise.all(policyPromises)).flat();
47
+ };
6
48
  class BlacklistRequestInspector {
7
- constructor(resolveAccessPolicy, environmentReadinessWaiter) {
8
- this.resolveAccessPolicy = resolveAccessPolicy;
49
+ constructor(userAccessRulesStorage, environmentReadinessWaiter) {
50
+ this.userAccessRulesStorage = userAccessRulesStorage;
9
51
  this.environmentReadinessWaiter = environmentReadinessWaiter;
10
52
  }
11
53
  async abortRequestForBlockedUsers(request, res, next) {
12
54
  const rawIp = request.ip || "";
55
+ console.log(`Raw IP: ${rawIp}`);
13
56
  request.logger.debug(() => ({
14
57
  data: { ja4: request.ja4 }
15
58
  }));
@@ -44,24 +87,20 @@ class BlacklistRequestInspector {
44
87
  }
45
88
  await this.environmentReadinessWaiter();
46
89
  try {
47
- const userIpAddress = util.getIPAddress(rawIp);
48
90
  const { userId, clientId } = this.extractIdsFromRequest(
49
91
  requestHeaders,
50
92
  requestBody
51
93
  );
52
- const accessPolicy = await this.resolveAccessPolicy({
53
- policyScope: {
54
- clientId
55
- },
56
- policyScopeMatch: userAccessPolicy.ScopeMatch.Greedy,
57
- userScope: {
58
- userId,
59
- numericIp: userIpAddress.bigInt(),
60
- ja4Hash: ja4
61
- },
62
- userScopeMatch: userAccessPolicy.ScopeMatch.Greedy
63
- });
64
- return userAccessPolicy.AccessPolicyType.Block === accessPolicy?.type;
94
+ const accessPolicies = await getPrioritisedAccessRule(
95
+ this.userAccessRulesStorage,
96
+ getRequestUserScope(requestHeaders, ja4, rawIp, userId),
97
+ clientId
98
+ );
99
+ if (!accessPolicies || accessPolicies.length === 0 || !accessPolicies[0]) {
100
+ return false;
101
+ }
102
+ const accessPolicy = accessPolicies[0];
103
+ return userAccessPolicy.AccessPolicyType.Block === accessPolicy.type;
65
104
  } catch (err) {
66
105
  logger.error(() => ({
67
106
  err,
@@ -86,3 +125,5 @@ class BlacklistRequestInspector {
86
125
  }
87
126
  }
88
127
  exports.BlacklistRequestInspector = BlacklistRequestInspector;
128
+ exports.getPrioritisedAccessRule = getPrioritisedAccessRule;
129
+ exports.getRequestUserScope = getRequestUserScope;
@@ -1,19 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const common = require("@prosopo/common");
4
- const userAccessPolicy = require("@prosopo/user-access-policy");
5
3
  const blacklistRequestInspector = require("./blacklistRequestInspector.cjs");
6
4
  const blockMiddleware = (providerEnvironment) => {
7
- const logLevel = common.parseLogLevel(providerEnvironment.config.logLevel);
8
- const logger = common.getLogger(logLevel, "blockMiddleware");
9
5
  const userAccessRulesStorage = providerEnvironment.getDb().getUserAccessRulesStorage();
10
6
  const environmentReadinessWaiter = providerEnvironment.isReady.bind(providerEnvironment);
11
- const resolveAccessPolicy = userAccessPolicy.createAccessPolicyResolver(
12
- userAccessRulesStorage,
13
- logger
14
- );
15
7
  const blacklistRequestInspector$1 = new blacklistRequestInspector.BlacklistRequestInspector(
16
- resolveAccessPolicy,
8
+ userAccessRulesStorage,
17
9
  environmentReadinessWaiter
18
10
  );
19
11
  return blacklistRequestInspector$1.abortRequestForBlockedUsers.bind(
@@ -4,11 +4,11 @@ const apiExpressRouter = require("@prosopo/api-express-router");
4
4
  const common = require("@prosopo/common");
5
5
  const datasets = require("@prosopo/datasets");
6
6
  const types = require("@prosopo/types");
7
- const userAccessPolicy = require("@prosopo/user-access-policy");
8
7
  const util = require("@prosopo/util");
9
8
  const express = require("express");
10
9
  const frictionlessTasks = require("../tasks/frictionless/frictionlessTasks.cjs");
11
10
  const tasks = require("../tasks/tasks.cjs");
11
+ const blacklistRequestInspector = require("./blacklistRequestInspector.cjs");
12
12
  const validateAddress = require("./validateAddress.cjs");
13
13
  const DEFAULT_FRICTIONLESS_THRESHOLD = 0.5;
14
14
  function prosopoRouter(env) {
@@ -72,22 +72,23 @@ function prosopoRouter(env) {
72
72
  })
73
73
  );
74
74
  }
75
- const userAccessPolicy2 = await tasks$1.imgCaptchaManager.getPrioritisedAccessPolicies(
75
+ const userScope = blacklistRequestInspector.getRequestUserScope(
76
+ util.flatten(req.headers),
77
+ req.ja4,
78
+ req.ip,
79
+ user
80
+ );
81
+ const userAccessPolicy = (await tasks$1.imgCaptchaManager.getPrioritisedAccessPolicies(
76
82
  userAccessRulesStorage,
77
83
  dapp,
78
- {
79
- numericIp: ipAddress.bigInt(),
80
- userId: user,
81
- ja4Hash: req.ja4,
82
- userAgent: req.headers["user-agent"]
83
- }
84
- );
84
+ userScope
85
+ ))[0];
85
86
  const captchaConfig = {
86
87
  solved: {
87
- count: userAccessPolicy2?.solvedImagesCount || env.config.captchas.solved.count
88
+ count: userAccessPolicy?.solvedImagesCount || env.config.captchas.solved.count
88
89
  },
89
90
  unsolved: {
90
- count: userAccessPolicy2?.unsolvedImagesCount || env.config.captchas.unsolved.count
91
+ count: userAccessPolicy?.unsolvedImagesCount || env.config.captchas.unsolved.count
91
92
  }
92
93
  };
93
94
  const taskData = await tasks$1.imgCaptchaManager.getRandomCaptchasAndRequestHash(
@@ -268,11 +269,22 @@ function prosopoRouter(env) {
268
269
  })
269
270
  );
270
271
  }
272
+ const userScope = blacklistRequestInspector.getRequestUserScope(
273
+ util.flatten(req.headers),
274
+ req.ja4,
275
+ req.ip,
276
+ user
277
+ );
278
+ const userAccessPolicy = (await tasks$1.powCaptchaManager.getPrioritisedAccessPolicies(
279
+ userAccessRulesStorage,
280
+ dapp,
281
+ userScope
282
+ ))[0];
271
283
  const challenge = await tasks$1.powCaptchaManager.getPowCaptchaChallenge(
272
284
  user,
273
285
  dapp,
274
286
  origin,
275
- clientSettings?.settings?.powDifficulty
287
+ userAccessPolicy?.powDifficulty || clientSettings?.settings?.powDifficulty
276
288
  );
277
289
  await tasks$1.db.storePowCaptchaRecord(
278
290
  challenge.challenge,
@@ -461,59 +473,20 @@ function prosopoRouter(env) {
461
473
  await tasks$1.frictionlessManager.sendImageCaptcha(tokenId)
462
474
  );
463
475
  }
464
- const ipAddress = util.getIPAddress(req.ip || "");
465
- const resolveAccessPolicy = userAccessPolicy.createAccessPolicyResolver(
466
- userAccessRulesStorage,
467
- req.logger
476
+ const userScope = blacklistRequestInspector.getRequestUserScope(
477
+ util.flatten(req.headers),
478
+ req.ja4,
479
+ req.ip,
480
+ user
468
481
  );
469
- const accessPolicy = await resolveAccessPolicy({
470
- policyScope: {
471
- clientId: dapp
472
- },
473
- policyScopeMatch: userAccessPolicy.ScopeMatch.Greedy,
474
- userScope: {
475
- userId: user,
476
- ja4Hash: req.ja4,
477
- numericIp: ipAddress.bigInt()
478
- },
479
- userScopeMatch: userAccessPolicy.ScopeMatch.Greedy
480
- });
481
- const accessPolicies = await Promise.all([
482
- resolveAccessPolicy({
483
- userScope: {
484
- userId: user,
485
- ja4Hash: req.ja4,
486
- numericIp: ipAddress.bigInt()
487
- },
488
- userScopeMatch: userAccessPolicy.ScopeMatch.Exact
489
- }),
490
- resolveAccessPolicy({
491
- policyScope: {
492
- clientId: dapp
493
- },
494
- policyScopeMatch: userAccessPolicy.ScopeMatch.Exact,
495
- userScope: {
496
- userId: user,
497
- ja4Hash: req.ja4,
498
- numericIp: ipAddress.bigInt()
499
- },
500
- userScopeMatch: userAccessPolicy.ScopeMatch.Exact
501
- }),
502
- resolveAccessPolicy({
503
- policyScope: {
504
- clientId: dapp
505
- },
506
- policyScopeMatch: userAccessPolicy.ScopeMatch.Exact,
507
- userScope: {
508
- ja4Hash: req.ja4,
509
- numericIp: ipAddress.bigInt()
510
- },
511
- userScopeMatch: userAccessPolicy.ScopeMatch.Exact
512
- })
513
- ]);
514
- if (accessPolicy?.solvedImagesCount || accessPolicy?.unsolvedImagesCount) {
482
+ const userAccessPolicy = (await tasks$1.frictionlessManager.getPrioritisedAccessPolicies(
483
+ userAccessRulesStorage,
484
+ dapp,
485
+ userScope
486
+ ))[0];
487
+ if (userAccessPolicy?.captchaType === types.CaptchaType.image) {
515
488
  await tasks$1.frictionlessManager.scoreIncreaseAccessPolicy(
516
- accessPolicy,
489
+ userAccessPolicy,
517
490
  baseBotScore,
518
491
  botScore,
519
492
  tokenId
@@ -2,8 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const common = require("@prosopo/common");
4
4
  const types = require("@prosopo/types");
5
- const userAccessPolicy = require("@prosopo/user-access-policy");
6
- const util = require("@prosopo/util");
5
+ const blacklistRequestInspector = require("../api/blacklistRequestInspector.cjs");
7
6
  class CaptchaManager {
8
7
  constructor(db, pair, logger) {
9
8
  this.pair = pair;
@@ -91,47 +90,11 @@ class CaptchaManager {
91
90
  };
92
91
  }
93
92
  async getPrioritisedAccessPolicies(userAccessRulesStorage, clientId, userScope) {
94
- const resolver = userAccessPolicy.createAccessPolicyResolver(
93
+ return blacklistRequestInspector.getPrioritisedAccessRule(
95
94
  userAccessRulesStorage,
96
- this.logger
95
+ userScope,
96
+ clientId
97
97
  );
98
- const userScopeKeys = Object.keys(userScope).filter(
99
- (key) => userScope[key] !== void 0
100
- );
101
- const prioritisedUserScopes = util.uniqueSubsets(userScopeKeys).map(
102
- (subset) => subset.reduce(
103
- (acc, key) => {
104
- acc[key] = userScope[key];
105
- return acc;
106
- },
107
- {}
108
- )
109
- );
110
- for (const clientOrUndefined of [clientId, void 0]) {
111
- for (const scope of prioritisedUserScopes) {
112
- const accessPolicy = await resolver({
113
- ...clientOrUndefined && {
114
- policyScope: {
115
- clientId: clientOrUndefined
116
- },
117
- policyScopeMatch: userAccessPolicy.ScopeMatch.Exact
118
- },
119
- userScope: userAccessPolicy.userScopeInputSchema.parse(scope),
120
- userScopeMatch: userAccessPolicy.ScopeMatch.Exact
121
- });
122
- if (accessPolicy) {
123
- this.logger.debug(() => ({
124
- msg: "Access policy found",
125
- data: {
126
- accessPolicy,
127
- scope
128
- }
129
- }));
130
- return accessPolicy;
131
- }
132
- }
133
- }
134
- return void 0;
135
98
  }
136
99
  async getDetectorKeys() {
137
100
  return await this.db.getDetectorKeys();
@@ -3,7 +3,7 @@ import type { TranslationKey } from "@prosopo/locale";
3
3
  import type { KeyringPair } from "@prosopo/types";
4
4
  import { CaptchaType, Tier } from "@prosopo/types";
5
5
  import type { ClientRecord, FrictionlessTokenId, IProviderDatabase, IUserDataSlim, Session } from "@prosopo/types-database";
6
- import { type AccessRulesStorage } from "@prosopo/user-access-policy";
6
+ import type { AccessRulesStorage } from "@prosopo/user-access-policy";
7
7
  export declare class CaptchaManager {
8
8
  pair: KeyringPair;
9
9
  db: IProviderDatabase;
@@ -22,17 +22,26 @@ export declare class CaptchaManager {
22
22
  verified: boolean;
23
23
  };
24
24
  getPrioritisedAccessPolicies(userAccessRulesStorage: AccessRulesStorage, clientId: string, userScope: {
25
- [key: string]: bigint | string | undefined;
25
+ [key: string]: bigint | string;
26
26
  }): Promise<{
27
27
  type?: any;
28
28
  captchaType?: any;
29
+ userId?: string | undefined;
30
+ clientId?: string | undefined;
29
31
  description?: any;
30
32
  solvedImagesCount?: any;
31
33
  imageThreshold?: any;
32
34
  powDifficulty?: any;
33
35
  unsolvedImagesCount?: any;
34
36
  frictionlessScore?: any;
35
- } | undefined>;
37
+ ruleGroupId?: string | undefined;
38
+ numericIp?: bigint | undefined;
39
+ numericIpMaskMin?: bigint | undefined;
40
+ numericIpMaskMax?: bigint | undefined;
41
+ ja4Hash?: string | undefined;
42
+ headersHash?: string | undefined;
43
+ userAgentHash?: string | undefined;
44
+ }[]>;
36
45
  getDetectorKeys(): Promise<string[]>;
37
46
  static canClientSeeScore(tier: Tier, score?: number): boolean | 0 | undefined;
38
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"captchaManager.d.ts","sourceRoot":"","sources":["../../src/tasks/captchaManager.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAa,WAAW,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EACX,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,OAAO,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,KAAK,kBAAkB,EAIvB,MAAM,6BAA6B,CAAC;AAGrC,qBAAa,cAAc;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,iBAAiB,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;gBAEH,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM;IAM/D,iCAAiC,CAAC,aAAa,EAAE,OAAO;IAOxD,cAAc,CACnB,cAAc,EAAE,YAAY,GAAG,aAAa,EAC5C,WAAW,EAAE,WAAW,EACxB,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;QACV,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,cAAc,CAAC;QACxB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;QAC1C,IAAI,EAAE,WAAW,CAAC;KAClB,CAAC;IA+EF,uBAAuB,CACtB,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACpC,KAAK,CAAC,EAAE,MAAM;;;;;IAaT,4BAA4B,CACjC,sBAAsB,EAAE,kBAAkB,EAC1C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE;QACV,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KAC3C;;;;;;;;;;IAkDI,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI1C,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM;CAGnD"}
1
+ {"version":3,"file":"captchaManager.d.ts","sourceRoot":"","sources":["../../src/tasks/captchaManager.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAa,WAAW,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,KAAK,EACX,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,OAAO,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAGtE,qBAAa,cAAc;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,iBAAiB,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;gBAEH,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,MAAM;IAM/D,iCAAiC,CAAC,aAAa,EAAE,OAAO;IAOxD,cAAc,CACnB,cAAc,EAAE,YAAY,GAAG,aAAa,EAC5C,WAAW,EAAE,WAAW,EACxB,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;QACV,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,cAAc,CAAC;QACxB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;QAC1C,IAAI,EAAE,WAAW,CAAC;KAClB,CAAC;IA+EF,uBAAuB,CACtB,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EACpC,KAAK,CAAC,EAAE,MAAM;;;;;IAaT,4BAA4B,CACjC,sBAAsB,EAAE,kBAAkB,EAC1C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE;QACV,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;KAC/B;;;;;;;;;;;;;;;;;;;IASI,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI1C,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM;CAGnD"}
@@ -1,7 +1,6 @@
1
1
  import { getLogger } from "@prosopo/common";
2
2
  import { ApiParams, CaptchaType, Tier } from "@prosopo/types";
3
- import { ScopeMatch, createAccessPolicyResolver, userScopeInputSchema, } from "@prosopo/user-access-policy";
4
- import { uniqueSubsets } from "@prosopo/util";
3
+ import { getPrioritisedAccessRule } from "../api/blacklistRequestInspector.js";
5
4
  export class CaptchaManager {
6
5
  constructor(db, pair, logger) {
7
6
  this.pair = pair;
@@ -85,37 +84,7 @@ export class CaptchaManager {
85
84
  };
86
85
  }
87
86
  async getPrioritisedAccessPolicies(userAccessRulesStorage, clientId, userScope) {
88
- const resolver = createAccessPolicyResolver(userAccessRulesStorage, this.logger);
89
- const userScopeKeys = Object.keys(userScope).filter((key) => userScope[key] !== undefined);
90
- const prioritisedUserScopes = uniqueSubsets(userScopeKeys).map((subset) => subset.reduce((acc, key) => {
91
- acc[key] = userScope[key];
92
- return acc;
93
- }, {}));
94
- for (const clientOrUndefined of [clientId, undefined]) {
95
- for (const scope of prioritisedUserScopes) {
96
- const accessPolicy = await resolver({
97
- ...(clientOrUndefined && {
98
- policyScope: {
99
- clientId: clientOrUndefined,
100
- },
101
- policyScopeMatch: ScopeMatch.Exact,
102
- }),
103
- userScope: userScopeInputSchema.parse(scope),
104
- userScopeMatch: ScopeMatch.Exact,
105
- });
106
- if (accessPolicy) {
107
- this.logger.debug(() => ({
108
- msg: "Access policy found",
109
- data: {
110
- accessPolicy,
111
- scope,
112
- },
113
- }));
114
- return accessPolicy;
115
- }
116
- }
117
- }
118
- return undefined;
87
+ return getPrioritisedAccessRule(userAccessRulesStorage, userScope, clientId);
119
88
  }
120
89
  async getDetectorKeys() {
121
90
  return await this.db.getDetectorKeys();
@@ -1 +1 @@
1
- {"version":3,"file":"captchaManager.js","sourceRoot":"","sources":["../../src/tasks/captchaManager.ts"],"names":[],"mappings":"AAcA,OAAO,EAAe,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAQ9D,OAAO,EAEN,UAAU,EACV,0BAA0B,EAC1B,oBAAoB,GACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,OAAO,cAAc;IAK1B,YAAY,EAAqB,EAAE,IAAiB,EAAE,MAAe;QACpE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,iCAAiC,CAAC,aAAsB;QAC7D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,mCAAmC,CACpE,aAAa,CAAC,OAAO,CACrB,CAAC;QACF,OAAO,WAAW,CAAC,CAAC,CAAE,WAAW,CAAC,GAA2B,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,cAAc,CACnB,cAA4C,EAC5C,WAAwB,EACxB,SAAkB;QAOlB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACxB,GAAG,EAAE,oBAAoB;YACzB,IAAI,EAAE;gBACL,WAAW;gBACX,SAAS;aACT;SACD,CAAC,CAAC,CAAC;QAKJ,IAAI,SAAS,EAAE,CAAC;YACf,IAAI,cAAc,EAAE,QAAQ,EAAE,WAAW,KAAK,WAAW,CAAC,YAAY,EAAE,CAAC;gBACxE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;gBACrE,IAAI,CAAC,aAAa,EAAE,CAAC;oBACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;wBACvB,GAAG,EAAE,+BAA+B;wBACpC,IAAI,EAAE;4BACL,OAAO,EAAE,cAAc,CAAC,OAAO;4BAC/B,SAAS,EAAE,SAAS;yBACpB;qBACD,CAAC,CAAC,CAAC;oBACJ,OAAO;wBACN,KAAK,EAAE,KAAK;wBACZ,MAAM,EAAE,0BAA0B;wBAClC,IAAI,EAAE,WAAW;qBACjB,CAAC;gBACH,CAAC;gBACD,MAAM,mBAAmB,GACxB,MAAM,IAAI,CAAC,iCAAiC,CAAC,aAAa,CAAC,CAAC;gBAC7D,OAAO;oBACN,KAAK,EAAE,IAAI;oBACX,mBAAmB;oBACnB,IAAI,EAAE,WAAW;iBACjB,CAAC;YACH,CAAC;YAID,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACvB,GAAG,EAAE,8BAA8B;gBACnC,IAAI,EAAE;oBACL,OAAO,EAAE,cAAc,CAAC,OAAO;oBAC/B,SAAS,EAAE,SAAS;oBACpB,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW;iBAC1D;aACD,CAAC,CAAC,CAAC;YACJ,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,4BAA4B;gBACpC,IAAI,EAAE,WAAW;aACjB,CAAC;QACH,CAAC;QAQD,IAAI,cAAc,EAAE,QAAQ,EAAE,WAAW,KAAK,WAAW,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACvB,GAAG,EAAE,WAAW,WAAW,UAAU;gBACrC,IAAI,EAAE;oBACL,OAAO,EAAE,cAAc,CAAC,OAAO;oBAC/B,oBAAoB,EAAE,WAAW;oBACjC,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW;iBAC1D;aACD,CAAC,CAAC,CAAC;YACJ,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,4BAA4B;gBACpC,IAAI,EAAE,WAAW;aACjB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC3C,CAAC;IAED,uBAAuB,CACtB,QAAiB,EACjB,YAA0B,EAC1B,WAAoC,EACpC,KAAc;QAEd,OAAO;YACN,MAAM,EAAE,WAAW,CAClB,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,uBAAuB,CACxD;YACD,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ;YAC9B,GAAG,CAAC,cAAc,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;gBACjE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK;aACxB,CAAC;SACF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,4BAA4B,CACjC,sBAA0C,EAC1C,QAAgB,EAChB,SAEC;QAED,MAAM,QAAQ,GAAG,0BAA0B,CAC1C,sBAAsB,EACtB,IAAI,CAAC,MAAM,CACX,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAClD,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CACrC,CAAC;QAEF,MAAM,qBAAqB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,GAAG,CAC7D,CAAC,MAAgB,EAAE,EAAE,CACpB,MAAM,CAAC,MAAM,CACZ,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACZ,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,GAAG,CAAC;QACZ,CAAC,EACD,EAAiD,CACjD,CACF,CAAC;QAEF,KAAK,MAAM,iBAAiB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;YACvD,KAAK,MAAM,KAAK,IAAI,qBAAqB,EAAE,CAAC;gBAC3C,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC;oBACnC,GAAG,CAAC,iBAAiB,IAAI;wBACxB,WAAW,EAAE;4BACZ,QAAQ,EAAE,iBAAiB;yBAC3B;wBACD,gBAAgB,EAAE,UAAU,CAAC,KAAK;qBAClC,CAAC;oBACF,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC;oBAE5C,cAAc,EAAE,UAAU,CAAC,KAAK;iBAChC,CAAC,CAAC;gBACH,IAAI,YAAY,EAAE,CAAC;oBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;wBACxB,GAAG,EAAE,qBAAqB;wBAC1B,IAAI,EAAE;4BACL,YAAY;4BACZ,KAAK;yBACL;qBACD,CAAC,CAAC,CAAC;oBACJ,OAAO,YAAY,CAAC;gBACrB,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,eAAe;QACpB,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,IAAU,EAAE,KAAc;QAClD,OAAO,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;IAC5C,CAAC;CACD"}
1
+ {"version":3,"file":"captchaManager.js","sourceRoot":"","sources":["../../src/tasks/captchaManager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/provider",
3
- "version": "3.0.5",
3
+ "version": "3.1.0",
4
4
  "author": "PROSOPO LIMITED <info@prosopo.io>",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./dist/index.js",
@@ -25,7 +25,7 @@
25
25
  "dependencies": {
26
26
  "@noble/hashes": "1.5.0",
27
27
  "@polkadot/util": "12.6.2",
28
- "@prosopo/api-express-router": "3.0.2",
28
+ "@prosopo/api-express-router": "3.0.3",
29
29
  "@prosopo/api-route": "2.6.7",
30
30
  "@prosopo/common": "3.0.2",
31
31
  "@prosopo/config": "3.1.0",
@@ -48,7 +48,7 @@
48
48
  "node-fetch": "3.3.2",
49
49
  "openpgp": "5.11.3",
50
50
  "read-tls-client-hello": "1.1.0",
51
- "uuid": "10.0.0",
51
+ "uuid": "11.1.0",
52
52
  "webpack-dev-server": "5.2.2",
53
53
  "zod": "3.23.8"
54
54
  },