@prosopo/provider 2.1.6 → 2.1.8

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.
Files changed (263) hide show
  1. package/package.json +13 -12
  2. package/.dockerignore +0 -5
  3. package/dist/api/admin.d.ts +0 -4
  4. package/dist/api/admin.d.ts.map +0 -1
  5. package/dist/api/admin.js +0 -36
  6. package/dist/api/admin.js.map +0 -1
  7. package/dist/api/authMiddleware.d.ts +0 -6
  8. package/dist/api/authMiddleware.d.ts.map +0 -1
  9. package/dist/api/authMiddleware.js +0 -66
  10. package/dist/api/authMiddleware.js.map +0 -1
  11. package/dist/api/captcha.d.ts +0 -4
  12. package/dist/api/captcha.d.ts.map +0 -1
  13. package/dist/api/captcha.js +0 -299
  14. package/dist/api/captcha.js.map +0 -1
  15. package/dist/api/captchaScheduler.d.ts +0 -4
  16. package/dist/api/captchaScheduler.d.ts.map +0 -1
  17. package/dist/api/captchaScheduler.js +0 -17
  18. package/dist/api/captchaScheduler.js.map +0 -1
  19. package/dist/api/errorHandler.d.ts +0 -11
  20. package/dist/api/errorHandler.d.ts.map +0 -1
  21. package/dist/api/errorHandler.js +0 -42
  22. package/dist/api/errorHandler.js.map +0 -1
  23. package/dist/api/verify.d.ts +0 -4
  24. package/dist/api/verify.d.ts.map +0 -1
  25. package/dist/api/verify.js +0 -98
  26. package/dist/api/verify.js.map +0 -1
  27. package/dist/batch/commitments.d.ts +0 -24
  28. package/dist/batch/commitments.d.ts.map +0 -1
  29. package/dist/batch/commitments.js +0 -130
  30. package/dist/batch/commitments.js.map +0 -1
  31. package/dist/batch/index.d.ts +0 -2
  32. package/dist/batch/index.d.ts.map +0 -1
  33. package/dist/batch/index.js +0 -2
  34. package/dist/batch/index.js.map +0 -1
  35. package/dist/cjs/api/admin.cjs +0 -37
  36. package/dist/cjs/api/authMiddleware.cjs +0 -66
  37. package/dist/cjs/api/captcha.cjs +0 -380
  38. package/dist/cjs/api/errorHandler.cjs +0 -42
  39. package/dist/cjs/api/verify.cjs +0 -120
  40. package/dist/cjs/index.cjs +0 -25
  41. package/dist/cjs/schedulers/captchaScheduler.cjs +0 -33
  42. package/dist/cjs/schedulers/getClientList.cjs +0 -31
  43. package/dist/cjs/tasks/client/clientTasks.cjs +0 -148
  44. package/dist/cjs/tasks/dataset/datasetTasks.cjs +0 -30
  45. package/dist/cjs/tasks/dataset/datasetTasksUtils.cjs +0 -34
  46. package/dist/cjs/tasks/detection/decodePayload.cjs +0 -549
  47. package/dist/cjs/tasks/detection/getBotScore.cjs +0 -18
  48. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +0 -313
  49. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasksUtils.cjs +0 -25
  50. package/dist/cjs/tasks/index.cjs +0 -4
  51. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +0 -134
  52. package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +0 -26
  53. package/dist/cjs/tasks/tasks.cjs +0 -40
  54. package/dist/cjs/util.cjs +0 -45
  55. package/dist/index.d.ts +0 -10
  56. package/dist/index.d.ts.map +0 -1
  57. package/dist/index.js +0 -10
  58. package/dist/index.js.map +0 -1
  59. package/dist/scheduler.d.ts +0 -4
  60. package/dist/scheduler.d.ts.map +0 -1
  61. package/dist/scheduler.js +0 -21
  62. package/dist/scheduler.js.map +0 -1
  63. package/dist/schedulers/captchaScheduler.d.ts +0 -4
  64. package/dist/schedulers/captchaScheduler.d.ts.map +0 -1
  65. package/dist/schedulers/captchaScheduler.js +0 -28
  66. package/dist/schedulers/captchaScheduler.js.map +0 -1
  67. package/dist/schedulers/getClientList.d.ts +0 -4
  68. package/dist/schedulers/getClientList.d.ts.map +0 -1
  69. package/dist/schedulers/getClientList.js +0 -28
  70. package/dist/schedulers/getClientList.js.map +0 -1
  71. package/dist/tasks/client/clientTasks.d.ts +0 -13
  72. package/dist/tasks/client/clientTasks.d.ts.map +0 -1
  73. package/dist/tasks/client/clientTasks.js +0 -87
  74. package/dist/tasks/client/clientTasks.js.map +0 -1
  75. package/dist/tasks/dataset/datasetTasks.d.ts +0 -13
  76. package/dist/tasks/dataset/datasetTasks.d.ts.map +0 -1
  77. package/dist/tasks/dataset/datasetTasks.js +0 -19
  78. package/dist/tasks/dataset/datasetTasks.js.map +0 -1
  79. package/dist/tasks/dataset/datasetTasksUtils.d.ts +0 -3
  80. package/dist/tasks/dataset/datasetTasksUtils.d.ts.map +0 -1
  81. package/dist/tasks/dataset/datasetTasksUtils.js +0 -34
  82. package/dist/tasks/dataset/datasetTasksUtils.js.map +0 -1
  83. package/dist/tasks/detection/decodePayload.d.ts +0 -3
  84. package/dist/tasks/detection/decodePayload.d.ts.map +0 -1
  85. package/dist/tasks/detection/decodePayload.js +0 -302
  86. package/dist/tasks/detection/decodePayload.js.map +0 -1
  87. package/dist/tasks/detection/getBotScore.d.ts +0 -2
  88. package/dist/tasks/detection/getBotScore.d.ts.map +0 -1
  89. package/dist/tasks/detection/getBotScore.js +0 -17
  90. package/dist/tasks/detection/getBotScore.js.map +0 -1
  91. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +0 -29
  92. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +0 -1
  93. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +0 -242
  94. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +0 -1
  95. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts +0 -7
  96. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts.map +0 -1
  97. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js +0 -18
  98. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js.map +0 -1
  99. package/dist/tasks/index.d.ts +0 -2
  100. package/dist/tasks/index.d.ts.map +0 -1
  101. package/dist/tasks/index.js +0 -2
  102. package/dist/tasks/index.js.map +0 -1
  103. package/dist/tasks/powCaptcha/powTasks.d.ts +0 -13
  104. package/dist/tasks/powCaptcha/powTasks.d.ts.map +0 -1
  105. package/dist/tasks/powCaptcha/powTasks.js +0 -84
  106. package/dist/tasks/powCaptcha/powTasks.js.map +0 -1
  107. package/dist/tasks/powCaptcha/powTasksUtils.d.ts +0 -3
  108. package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +0 -1
  109. package/dist/tasks/powCaptcha/powTasksUtils.js +0 -22
  110. package/dist/tasks/powCaptcha/powTasksUtils.js.map +0 -1
  111. package/dist/tasks/tasks.d.ts +0 -22
  112. package/dist/tasks/tasks.d.ts.map +0 -1
  113. package/dist/tasks/tasks.js +0 -24
  114. package/dist/tasks/tasks.js.map +0 -1
  115. package/dist/tests/accounts.d.ts +0 -12
  116. package/dist/tests/accounts.d.ts.map +0 -1
  117. package/dist/tests/accounts.js +0 -35
  118. package/dist/tests/accounts.js.map +0 -1
  119. package/dist/tests/contract/helpers.test.d.ts +0 -6
  120. package/dist/tests/contract/helpers.test.d.ts.map +0 -1
  121. package/dist/tests/contract/helpers.test.js +0 -54
  122. package/dist/tests/contract/helpers.test.js.map +0 -1
  123. package/dist/tests/dataUtils/DatabaseAccounts.d.ts +0 -35
  124. package/dist/tests/dataUtils/DatabaseAccounts.d.ts.map +0 -1
  125. package/dist/tests/dataUtils/DatabaseAccounts.js +0 -84
  126. package/dist/tests/dataUtils/DatabaseAccounts.js.map +0 -1
  127. package/dist/tests/dataUtils/DatabasePopulator.d.ts +0 -73
  128. package/dist/tests/dataUtils/DatabasePopulator.d.ts.map +0 -1
  129. package/dist/tests/dataUtils/DatabasePopulator.js +0 -326
  130. package/dist/tests/dataUtils/DatabasePopulator.js.map +0 -1
  131. package/dist/tests/dataUtils/dapp-example-contract/dapp.json +0 -648
  132. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts +0 -4
  133. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts.map +0 -1
  134. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js +0 -27
  135. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js.map +0 -1
  136. package/dist/tests/dataUtils/funds.d.ts +0 -9
  137. package/dist/tests/dataUtils/funds.d.ts.map +0 -1
  138. package/dist/tests/dataUtils/funds.js +0 -105
  139. package/dist/tests/dataUtils/funds.js.map +0 -1
  140. package/dist/tests/dataUtils/populateDatabase.d.ts +0 -16
  141. package/dist/tests/dataUtils/populateDatabase.d.ts.map +0 -1
  142. package/dist/tests/dataUtils/populateDatabase.js +0 -72
  143. package/dist/tests/dataUtils/populateDatabase.js.map +0 -1
  144. package/dist/tests/getUser.d.ts +0 -4
  145. package/dist/tests/getUser.d.ts.map +0 -1
  146. package/dist/tests/getUser.js +0 -18
  147. package/dist/tests/getUser.js.map +0 -1
  148. package/dist/tests/index.d.ts +0 -2
  149. package/dist/tests/index.d.ts.map +0 -1
  150. package/dist/tests/index.js +0 -2
  151. package/dist/tests/index.js.map +0 -1
  152. package/dist/tests/integration/imgCaptcha.integration.test.d.ts +0 -2
  153. package/dist/tests/integration/imgCaptcha.integration.test.d.ts.map +0 -1
  154. package/dist/tests/integration/imgCaptcha.integration.test.js +0 -137
  155. package/dist/tests/integration/imgCaptcha.integration.test.js.map +0 -1
  156. package/dist/tests/integration/imgCaptcha.test.d.ts +0 -2
  157. package/dist/tests/integration/imgCaptcha.test.d.ts.map +0 -1
  158. package/dist/tests/integration/imgCaptcha.test.js +0 -103
  159. package/dist/tests/integration/imgCaptcha.test.js.map +0 -1
  160. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts +0 -32
  161. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts.map +0 -1
  162. package/dist/tests/integration/mocks/solvedTestCaptchas.js +0 -1046
  163. package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +0 -1
  164. package/dist/tests/integration/powCaptcha.integration.test.d.ts +0 -2
  165. package/dist/tests/integration/powCaptcha.integration.test.d.ts.map +0 -1
  166. package/dist/tests/integration/powCaptcha.integration.test.js +0 -222
  167. package/dist/tests/integration/powCaptcha.integration.test.js.map +0 -1
  168. package/dist/tests/integration/powCaptcha.test.d.ts +0 -2
  169. package/dist/tests/integration/powCaptcha.test.d.ts.map +0 -1
  170. package/dist/tests/integration/powCaptcha.test.js +0 -133
  171. package/dist/tests/integration/powCaptcha.test.js.map +0 -1
  172. package/dist/tests/integration/registerSitekey.d.ts +0 -2
  173. package/dist/tests/integration/registerSitekey.d.ts.map +0 -1
  174. package/dist/tests/integration/registerSitekey.js +0 -28
  175. package/dist/tests/integration/registerSitekey.js.map +0 -1
  176. package/dist/tests/tasks/tasks.test.d.ts +0 -6
  177. package/dist/tests/tasks/tasks.test.d.ts.map +0 -1
  178. package/dist/tests/tasks/tasks.test.js +0 -636
  179. package/dist/tests/tasks/tasks.test.js.map +0 -1
  180. package/dist/tests/unit/api/authMiddleware.test.d.ts +0 -2
  181. package/dist/tests/unit/api/authMiddleware.test.d.ts.map +0 -1
  182. package/dist/tests/unit/api/authMiddleware.test.js +0 -87
  183. package/dist/tests/unit/api/authMiddleware.test.js.map +0 -1
  184. package/dist/tests/unit/api/authMiddleware.unit.test.d.ts +0 -2
  185. package/dist/tests/unit/api/authMiddleware.unit.test.d.ts.map +0 -1
  186. package/dist/tests/unit/api/authMiddleware.unit.test.js +0 -108
  187. package/dist/tests/unit/api/authMiddleware.unit.test.js.map +0 -1
  188. package/dist/tests/unit/api/captchaScheduler.test.d.ts +0 -2
  189. package/dist/tests/unit/api/captchaScheduler.test.d.ts.map +0 -1
  190. package/dist/tests/unit/api/captchaScheduler.test.js +0 -47
  191. package/dist/tests/unit/api/captchaScheduler.test.js.map +0 -1
  192. package/dist/tests/unit/api/errorHandler.test.d.ts +0 -2
  193. package/dist/tests/unit/api/errorHandler.test.d.ts.map +0 -1
  194. package/dist/tests/unit/api/errorHandler.test.js +0 -65
  195. package/dist/tests/unit/api/errorHandler.test.js.map +0 -1
  196. package/dist/tests/unit/api/errorHandler.unit.test.d.ts +0 -2
  197. package/dist/tests/unit/api/errorHandler.unit.test.d.ts.map +0 -1
  198. package/dist/tests/unit/api/errorHandler.unit.test.js +0 -100
  199. package/dist/tests/unit/api/errorHandler.unit.test.js.map +0 -1
  200. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts +0 -2
  201. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts.map +0 -1
  202. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +0 -63
  203. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +0 -1
  204. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts +0 -2
  205. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts.map +0 -1
  206. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +0 -172
  207. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +0 -1
  208. package/dist/tests/unit/tasks/dataset/datasetTasks.test.d.ts +0 -2
  209. package/dist/tests/unit/tasks/dataset/datasetTasks.test.d.ts.map +0 -1
  210. package/dist/tests/unit/tasks/dataset/datasetTasks.test.js +0 -82
  211. package/dist/tests/unit/tasks/dataset/datasetTasks.test.js.map +0 -1
  212. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts +0 -2
  213. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts.map +0 -1
  214. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +0 -86
  215. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +0 -1
  216. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.d.ts +0 -2
  217. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.d.ts.map +0 -1
  218. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.js +0 -75
  219. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.js.map +0 -1
  220. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts +0 -2
  221. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts.map +0 -1
  222. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js +0 -75
  223. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js.map +0 -1
  224. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.d.ts +0 -2
  225. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.d.ts.map +0 -1
  226. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.js +0 -245
  227. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.js.map +0 -1
  228. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts +0 -2
  229. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts.map +0 -1
  230. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +0 -266
  231. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +0 -1
  232. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.d.ts +0 -2
  233. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.d.ts.map +0 -1
  234. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.js +0 -45
  235. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.js.map +0 -1
  236. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts +0 -2
  237. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts.map +0 -1
  238. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +0 -46
  239. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +0 -1
  240. package/dist/tests/unit/tasks/powCaptcha/powTasks.test.d.ts +0 -2
  241. package/dist/tests/unit/tasks/powCaptcha/powTasks.test.d.ts.map +0 -1
  242. package/dist/tests/unit/tasks/powCaptcha/powTasks.test.js +0 -121
  243. package/dist/tests/unit/tasks/powCaptcha/powTasks.test.js.map +0 -1
  244. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts +0 -2
  245. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts.map +0 -1
  246. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +0 -209
  247. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +0 -1
  248. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.d.ts +0 -2
  249. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.d.ts.map +0 -1
  250. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.js +0 -94
  251. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.js.map +0 -1
  252. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts +0 -2
  253. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts.map +0 -1
  254. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +0 -65
  255. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +0 -1
  256. package/dist/tests/util.test.d.ts +0 -2
  257. package/dist/tests/util.test.d.ts.map +0 -1
  258. package/dist/tests/util.test.js +0 -23
  259. package/dist/tests/util.test.js.map +0 -1
  260. package/dist/util.d.ts +0 -6
  261. package/dist/util.d.ts.map +0 -1
  262. package/dist/util.js +0 -34
  263. package/dist/util.js.map +0 -1
@@ -1,380 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const address = require("@polkadot/util-crypto/address");
4
- const common = require("@prosopo/common");
5
- const datasets = require("@prosopo/datasets");
6
- const types = require("@prosopo/types");
7
- const util = require("@prosopo/util");
8
- const express = require("express");
9
- const uuid = require("uuid");
10
- const getBotScore = require("../tasks/detection/getBotScore.cjs");
11
- const tasks = require("../tasks/tasks.cjs");
12
- const errorHandler = require("./errorHandler.cjs");
13
- const NO_IP_ADDRESS = "NO_IP_ADDRESS";
14
- const DEFAULT_FRICTIONLESS_THRESHOLD = 0.5;
15
- function prosopoRouter(env) {
16
- const router = express.Router();
17
- const tasks$1 = new tasks.Tasks(env);
18
- const GetImageCaptchaChallengePath = `${types.ApiPaths.GetImageCaptchaChallenge}/:${types.ApiParams.datasetId}/:${types.ApiParams.user}/:${types.ApiParams.dapp}`;
19
- router.get(GetImageCaptchaChallengePath, async (req, res, next) => {
20
- let parsed;
21
- try {
22
- parsed = types.CaptchaRequestBody.parse(req.params);
23
- } catch (err) {
24
- return next(
25
- new common.ProsopoApiError("CAPTCHA.PARSE_ERROR", {
26
- context: { code: 400, error: err }
27
- })
28
- );
29
- }
30
- const { datasetId, user, dapp } = parsed;
31
- try {
32
- address.validateAddress(dapp, false, 42);
33
- } catch (err) {
34
- return next(
35
- new common.ProsopoApiError("API.INVALID_SITE_KEY", {
36
- context: { code: 400, error: err, siteKey: dapp }
37
- })
38
- );
39
- }
40
- try {
41
- address.validateAddress(dapp, false, 42);
42
- } catch (err) {
43
- return next(
44
- new common.ProsopoApiError("API.INVALID_SITE_KEY", {
45
- context: { code: 400, error: err, siteKey: dapp }
46
- })
47
- );
48
- }
49
- try {
50
- address.validateAddress(user, false, 42);
51
- const clientRecord = await tasks$1.db.getClientRecord(dapp);
52
- if (!clientRecord) {
53
- return next(
54
- new common.ProsopoApiError("API.SITE_KEY_NOT_REGISTERED", {
55
- context: { code: 400, siteKey: dapp }
56
- })
57
- );
58
- }
59
- const taskData = await tasks$1.imgCaptchaManager.getRandomCaptchasAndRequestHash(
60
- datasetId,
61
- user,
62
- req.ip || NO_IP_ADDRESS,
63
- util.flatten(req.headers, ",")
64
- );
65
- const captchaResponse = {
66
- [types.ApiParams.status]: "ok",
67
- [types.ApiParams.captchas]: taskData.captchas.map((captcha) => ({
68
- ...captcha,
69
- items: captcha.items.map(
70
- (item) => datasets.parseCaptchaAssets(item, env.assetsResolver)
71
- )
72
- })),
73
- [types.ApiParams.requestHash]: taskData.requestHash,
74
- [types.ApiParams.timestamp]: taskData.timestamp.toString(),
75
- [types.ApiParams.signature]: {
76
- [types.ApiParams.provider]: {
77
- [types.ApiParams.requestHash]: taskData.signedRequestHash
78
- }
79
- }
80
- };
81
- return res.json(captchaResponse);
82
- } catch (err) {
83
- tasks$1.logger.error({ err, params: req.params });
84
- return next(
85
- new common.ProsopoApiError("API.BAD_REQUEST", {
86
- context: {
87
- error: err,
88
- code: 500,
89
- params: req.params
90
- }
91
- })
92
- );
93
- }
94
- });
95
- router.post(types.ApiPaths.SubmitImageCaptchaSolution, async (req, res, next) => {
96
- let parsed;
97
- try {
98
- parsed = types.CaptchaSolutionBody.parse(req.body);
99
- } catch (err) {
100
- return next(
101
- new common.ProsopoApiError("CAPTCHA.PARSE_ERROR", {
102
- context: { code: 400, error: err, body: req.body }
103
- })
104
- );
105
- }
106
- const { user, dapp } = parsed;
107
- try {
108
- address.validateAddress(dapp, false, 42);
109
- } catch (err) {
110
- return next(
111
- new common.ProsopoApiError("API.INVALID_SITE_KEY", {
112
- context: { code: 400, error: err, siteKey: dapp }
113
- })
114
- );
115
- }
116
- try {
117
- address.validateAddress(user, false, 42);
118
- const clientRecord = await tasks$1.db.getClientRecord(parsed.dapp);
119
- if (!clientRecord) {
120
- return next(
121
- new common.ProsopoApiError("API.SITE_KEY_NOT_REGISTERED", {
122
- context: { code: 400, siteKey: dapp }
123
- })
124
- );
125
- }
126
- const result = await tasks$1.imgCaptchaManager.dappUserSolution(
127
- user,
128
- dapp,
129
- parsed[types.ApiParams.requestHash],
130
- parsed[types.ApiParams.captchas],
131
- parsed[types.ApiParams.signature].user.timestamp,
132
- Number.parseInt(parsed[types.ApiParams.timestamp]),
133
- parsed[types.ApiParams.signature].provider.requestHash,
134
- req.ip || NO_IP_ADDRESS,
135
- util.flatten(req.headers, ",")
136
- );
137
- const returnValue = {
138
- status: req.i18n.t(
139
- result.verified ? "API.CAPTCHA_PASSED" : "API.CAPTCHA_FAILED"
140
- ),
141
- ...result
142
- };
143
- return res.json(returnValue);
144
- } catch (err) {
145
- tasks$1.logger.error({ err, body: req.body });
146
- return next(
147
- new common.ProsopoApiError("API.BAD_REQUEST", {
148
- context: { code: 500, siteKey: req.body.dapp }
149
- })
150
- );
151
- }
152
- });
153
- router.post(types.ApiPaths.GetPowCaptchaChallenge, async (req, res, next) => {
154
- let parsed;
155
- try {
156
- parsed = types.GetPowCaptchaChallengeRequestBody.parse(req.body);
157
- } catch (err) {
158
- return next(
159
- new common.ProsopoApiError("CAPTCHA.PARSE_ERROR", {
160
- context: { code: 400, error: err }
161
- })
162
- );
163
- }
164
- const { user, dapp, sessionId } = parsed;
165
- try {
166
- address.validateAddress(dapp, false, 42);
167
- } catch (err) {
168
- return next(
169
- new common.ProsopoApiError("API.INVALID_SITE_KEY", {
170
- context: { code: 400, error: err, siteKey: dapp }
171
- })
172
- );
173
- }
174
- try {
175
- address.validateAddress(user, false, 42);
176
- const clientSettings = await tasks$1.db.getClientRecord(dapp);
177
- const clientRecord = await tasks$1.db.getClientRecord(dapp);
178
- if (!clientRecord) {
179
- return next(
180
- new common.ProsopoApiError("API.SITE_KEY_NOT_REGISTERED", {
181
- context: { code: 400, siteKey: dapp }
182
- })
183
- );
184
- }
185
- if (sessionId) {
186
- const sessionRecord = await tasks$1.db.checkAndRemoveSession(sessionId);
187
- if (!sessionRecord) {
188
- return next(
189
- new common.ProsopoApiError("API.BAD_REQUEST", {
190
- context: { error: "Session ID not found", code: 400 }
191
- })
192
- );
193
- }
194
- } else if (!(clientSettings?.settings?.captchaType === "pow")) {
195
- return next(
196
- new common.ProsopoApiError("API.INCORRECT_CAPTCHA_TYPE", {
197
- context: { code: 400, siteKey: dapp }
198
- })
199
- );
200
- }
201
- const origin = req.headers.origin;
202
- if (!origin) {
203
- return next(
204
- new common.ProsopoApiError("API.BAD_REQUEST", {
205
- context: { error: "Origin header not found", code: 400 }
206
- })
207
- );
208
- }
209
- const challenge = await tasks$1.powCaptchaManager.getPowCaptchaChallenge(
210
- user,
211
- dapp,
212
- origin,
213
- clientSettings?.settings?.powDifficulty
214
- );
215
- await tasks$1.db.storePowCaptchaRecord(
216
- challenge.challenge,
217
- {
218
- requestedAtTimestamp: challenge.requestedAtTimestamp,
219
- userAccount: user,
220
- dappAccount: dapp
221
- },
222
- challenge.difficulty,
223
- challenge.providerSignature,
224
- req.ip || NO_IP_ADDRESS,
225
- util.flatten(req.headers, ",")
226
- );
227
- const getPowCaptchaResponse = {
228
- [types.ApiParams.status]: "ok",
229
- [types.ApiParams.challenge]: challenge.challenge,
230
- [types.ApiParams.difficulty]: challenge.difficulty,
231
- [types.ApiParams.timestamp]: challenge.requestedAtTimestamp.toString(),
232
- [types.ApiParams.signature]: {
233
- [types.ApiParams.provider]: {
234
- [types.ApiParams.challenge]: challenge.providerSignature
235
- }
236
- }
237
- };
238
- return res.json(getPowCaptchaResponse);
239
- } catch (err) {
240
- tasks$1.logger.error({ err, body: req.body });
241
- return next(
242
- new common.ProsopoApiError("API.BAD_REQUEST", {
243
- context: {
244
- code: 500,
245
- siteKey: req.body.dapp
246
- }
247
- })
248
- );
249
- }
250
- });
251
- router.post(types.ApiPaths.SubmitPowCaptchaSolution, async (req, res, next) => {
252
- let parsed;
253
- try {
254
- parsed = types.SubmitPowCaptchaSolutionBody.parse(req.body);
255
- } catch (err) {
256
- return next(
257
- new common.ProsopoApiError("CAPTCHA.PARSE_ERROR", {
258
- context: { code: 400, error: err, body: req.body }
259
- })
260
- );
261
- }
262
- const {
263
- challenge,
264
- difficulty,
265
- signature,
266
- nonce,
267
- verifiedTimeout,
268
- dapp,
269
- user
270
- } = parsed;
271
- try {
272
- address.validateAddress(dapp, false, 42);
273
- } catch (err) {
274
- return next(
275
- new common.ProsopoApiError("API.INVALID_SITE_KEY", {
276
- context: { code: 400, error: err, siteKey: dapp }
277
- })
278
- );
279
- }
280
- try {
281
- address.validateAddress(user, false, 42);
282
- address.validateAddress(dapp, false, 42);
283
- const clientRecord = await tasks$1.db.getClientRecord(dapp);
284
- if (!clientRecord) {
285
- return next(
286
- new common.ProsopoApiError("API.SITE_KEY_NOT_REGISTERED", {
287
- context: { code: 400, siteKey: dapp }
288
- })
289
- );
290
- }
291
- const verified = await tasks$1.powCaptchaManager.verifyPowCaptchaSolution(
292
- challenge,
293
- difficulty,
294
- signature.provider.challenge,
295
- nonce,
296
- verifiedTimeout,
297
- signature.user.timestamp,
298
- req.ip || NO_IP_ADDRESS,
299
- util.flatten(req.headers, ",")
300
- );
301
- const response = { status: "ok", verified };
302
- return res.json(response);
303
- } catch (err) {
304
- tasks$1.logger.error({ err, body: req.body });
305
- return next(
306
- new common.ProsopoApiError("API.BAD_REQUEST", {
307
- context: {
308
- code: 500,
309
- siteKey: req.body.dapp
310
- }
311
- })
312
- );
313
- }
314
- });
315
- router.post(
316
- types.ApiPaths.GetFrictionlessCaptchaChallenge,
317
- async (req, res, next) => {
318
- try {
319
- const { token, dapp } = types.GetFrictionlessCaptchaChallengeRequestBody.parse(req.body);
320
- const botScore = await getBotScore.getBotScore(token);
321
- const clientConfig = await tasks$1.db.getClientRecord(dapp);
322
- const botThreshold = clientConfig?.settings?.frictionlessThreshold || DEFAULT_FRICTIONLESS_THRESHOLD;
323
- if (Number(botScore) > botThreshold) {
324
- const response2 = {
325
- [types.ApiParams.captchaType]: "image",
326
- [types.ApiParams.status]: "ok"
327
- };
328
- return res.json(response2);
329
- }
330
- const sessionRecord = {
331
- sessionId: uuid.v4(),
332
- createdAt: /* @__PURE__ */ new Date()
333
- };
334
- await tasks$1.db.storeSessionRecord(sessionRecord);
335
- const response = {
336
- [types.ApiParams.captchaType]: "pow",
337
- [types.ApiParams.sessionId]: sessionRecord.sessionId,
338
- [types.ApiParams.status]: "ok"
339
- };
340
- return res.json(response);
341
- } catch (err) {
342
- console.error("Error in frictionless captcha challenge:", err);
343
- tasks$1.logger.error(err);
344
- return next(
345
- new common.ProsopoApiError("API.BAD_REQUEST", {
346
- context: { code: 400, error: err }
347
- })
348
- );
349
- }
350
- }
351
- );
352
- router.post(types.ApiPaths.UpdateProviderClients, async (req, res, next) => {
353
- try {
354
- await tasks$1.clientTaskManager.getClientList();
355
- return res.json({ message: "Provider updated" });
356
- } catch (err) {
357
- tasks$1.logger.error(err);
358
- return next(
359
- new common.ProsopoApiError("API.BAD_REQUEST", {
360
- context: { code: 400, error: err }
361
- })
362
- );
363
- }
364
- });
365
- router.get(types.ApiPaths.GetProviderDetails, async (req, res, next) => {
366
- try {
367
- return res.json({ version: util.version, ...{ message: "Provider online" } });
368
- } catch (err) {
369
- tasks$1.logger.error({ err, params: req.params });
370
- return next(
371
- new common.ProsopoApiError("API.BAD_REQUEST", {
372
- context: { code: 500 }
373
- })
374
- );
375
- }
376
- });
377
- router.use(errorHandler.handleErrors);
378
- return router;
379
- }
380
- exports.prosopoRouter = prosopoRouter;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const common = require("@prosopo/common");
4
- const locale = require("@prosopo/locale");
5
- const zod = require("zod");
6
- const handleErrors = (err, request, response, next) => {
7
- const { code, statusMessage, jsonError } = unwrapError(err);
8
- response.statusMessage = statusMessage;
9
- response.set("content-type", "application/json");
10
- response.status(code);
11
- response.send({ error: jsonError });
12
- response.end();
13
- };
14
- const unwrapError = (err) => {
15
- const code = "code" in err ? err.code : 400;
16
- let message = err.message;
17
- let jsonError = { code, message };
18
- let statusMessage = err.message;
19
- jsonError.message = message;
20
- while (err instanceof common.ProsopoBaseError && err.context) {
21
- jsonError.code = err.context.translationKey || err.translationKey || jsonError.code;
22
- jsonError.message = err.message;
23
- if (err.context.error) {
24
- err = err.context.error;
25
- } else {
26
- break;
27
- }
28
- }
29
- if (err instanceof zod.ZodError) {
30
- message = locale.i18n.t("CAPTCHA.PARSE_ERROR");
31
- statusMessage = message;
32
- if (typeof err.message === "object") {
33
- jsonError = err.message;
34
- } else {
35
- jsonError.message = JSON.parse(err.message);
36
- }
37
- }
38
- jsonError.code = jsonError.code || code;
39
- return { code, statusMessage, jsonError };
40
- };
41
- exports.handleErrors = handleErrors;
42
- exports.unwrapError = unwrapError;
@@ -1,120 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const address = require("@polkadot/util-crypto/address");
4
- const common = require("@prosopo/common");
5
- const types = require("@prosopo/types");
6
- const express = require("express");
7
- const tasks = require("../tasks/tasks.cjs");
8
- const authMiddleware = require("./authMiddleware.cjs");
9
- const errorHandler = require("./errorHandler.cjs");
10
- function prosopoVerifyRouter(env) {
11
- const router = express.Router();
12
- const tasks$1 = new tasks.Tasks(env);
13
- router.post(
14
- types.ApiPaths.VerifyImageCaptchaSolutionDapp,
15
- async (req, res, next) => {
16
- let parsed;
17
- try {
18
- parsed = types.VerifySolutionBody.parse(req.body);
19
- } catch (err) {
20
- return next(
21
- new common.ProsopoApiError("CAPTCHA.PARSE_ERROR", {
22
- context: { code: 400, error: err, body: req.body }
23
- })
24
- );
25
- }
26
- const { dappSignature, token } = parsed;
27
- try {
28
- const { user, dapp, timestamp, commitmentId } = types.decodeProcaptchaOutput(token);
29
- address.validateAddress(dapp, false, 42);
30
- address.validateAddress(user, false, 42);
31
- const clientRecord = await tasks$1.db.getClientRecord(dapp);
32
- if (!clientRecord) {
33
- return next(
34
- new common.ProsopoApiError("API.SITE_KEY_NOT_REGISTERED", {
35
- context: { code: 400, siteKey: dapp }
36
- })
37
- );
38
- }
39
- const keyPair = env.keyring.addFromAddress(dapp);
40
- authMiddleware.verifySignature(dappSignature, timestamp.toString(), keyPair);
41
- const response = await tasks$1.imgCaptchaManager.verifyImageCaptchaSolution(
42
- user,
43
- dapp,
44
- commitmentId,
45
- parsed.maxVerifiedTime
46
- );
47
- const verificationResponse = {
48
- [types.ApiParams.status]: req.t(response.status),
49
- [types.ApiParams.verified]: response[types.ApiParams.verified],
50
- ...response.commitmentId && {
51
- [types.ApiParams.commitmentId]: response.commitmentId
52
- }
53
- };
54
- res.json(verificationResponse);
55
- } catch (err) {
56
- tasks$1.logger.error({ err, body: req.body });
57
- return next(
58
- new common.ProsopoApiError("API.BAD_REQUEST", {
59
- context: { code: 500 }
60
- })
61
- );
62
- }
63
- }
64
- );
65
- router.post(types.ApiPaths.VerifyPowCaptchaSolution, async (req, res, next) => {
66
- let parsed;
67
- try {
68
- parsed = types.ServerPowCaptchaVerifyRequestBody.parse(req.body);
69
- } catch (err) {
70
- return next(
71
- new common.ProsopoApiError("CAPTCHA.PARSE_ERROR", {
72
- context: { code: 400, error: err, body: req.body }
73
- })
74
- );
75
- }
76
- try {
77
- const { token, dappSignature, verifiedTimeout } = parsed;
78
- const { dapp, user, timestamp, challenge } = types.decodeProcaptchaOutput(token);
79
- address.validateAddress(dapp, false, 42);
80
- address.validateAddress(user, false, 42);
81
- const clientRecord = await tasks$1.db.getClientRecord(dapp);
82
- if (!clientRecord) {
83
- return next(
84
- new common.ProsopoApiError("API.SITE_KEY_NOT_REGISTERED", {
85
- context: { code: 400, siteKey: dapp }
86
- })
87
- );
88
- }
89
- if (!challenge) {
90
- const unverifiedResponse = {
91
- status: req.t("API.USER_NOT_VERIFIED"),
92
- [types.ApiParams.verified]: false
93
- };
94
- return res.json(unverifiedResponse);
95
- }
96
- const dappPair = env.keyring.addFromAddress(dapp);
97
- authMiddleware.verifySignature(dappSignature, timestamp.toString(), dappPair);
98
- const approved = await tasks$1.powCaptchaManager.serverVerifyPowCaptchaSolution(
99
- dapp,
100
- challenge,
101
- verifiedTimeout
102
- );
103
- const verificationResponse = {
104
- status: req.t(approved ? "API.USER_VERIFIED" : "API.USER_NOT_VERIFIED"),
105
- [types.ApiParams.verified]: approved
106
- };
107
- return res.json(verificationResponse);
108
- } catch (err) {
109
- tasks$1.logger.error({ err, body: req.body });
110
- return next(
111
- new common.ProsopoApiError("API.BAD_REQUEST", {
112
- context: { code: 500 }
113
- })
114
- );
115
- }
116
- });
117
- router.use(errorHandler.handleErrors);
118
- return router;
119
- }
120
- exports.prosopoVerifyRouter = prosopoVerifyRouter;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- require("./tasks/index.cjs");
4
- const util = require("./util.cjs");
5
- const captcha = require("./api/captcha.cjs");
6
- const verify = require("./api/verify.cjs");
7
- const admin = require("./api/admin.cjs");
8
- const errorHandler = require("./api/errorHandler.cjs");
9
- const authMiddleware = require("./api/authMiddleware.cjs");
10
- const captchaScheduler = require("./schedulers/captchaScheduler.cjs");
11
- const getClientList = require("./schedulers/getClientList.cjs");
12
- const tasks = require("./tasks/tasks.cjs");
13
- exports.checkIfTaskIsRunning = util.checkIfTaskIsRunning;
14
- exports.encodeStringAddress = util.encodeStringAddress;
15
- exports.shuffleArray = util.shuffleArray;
16
- exports.prosopoRouter = captcha.prosopoRouter;
17
- exports.prosopoVerifyRouter = verify.prosopoVerifyRouter;
18
- exports.prosopoAdminRouter = admin.prosopoAdminRouter;
19
- exports.handleErrors = errorHandler.handleErrors;
20
- exports.unwrapError = errorHandler.unwrapError;
21
- exports.authMiddleware = authMiddleware.authMiddleware;
22
- exports.verifySignature = authMiddleware.verifySignature;
23
- exports.storeCaptchasExternally = captchaScheduler.storeCaptchasExternally;
24
- exports.getClientList = getClientList.getClientList;
25
- exports.Tasks = tasks.Tasks;
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const env = require("@prosopo/env");
4
- const types = require("@prosopo/types");
5
- const cron = require("cron");
6
- const tasks = require("../tasks/tasks.cjs");
7
- const util = require("../util.cjs");
8
- async function storeCaptchasExternally(pair, config) {
9
- const env$1 = new env.ProviderEnvironment(config, pair);
10
- await env$1.isReady();
11
- const tasks$1 = new tasks.Tasks(env$1);
12
- const defaultSchedule = "0 * * * *";
13
- const cronSchedule = config.scheduledTasks?.captchaScheduler ? config.scheduledTasks.captchaScheduler.schedule ? config.scheduledTasks.captchaScheduler.schedule : defaultSchedule : defaultSchedule;
14
- const job = new cron.CronJob(cronSchedule, async () => {
15
- const taskRunning = await util.checkIfTaskIsRunning(
16
- types.ScheduledTaskNames.StoreCommitmentsExternal,
17
- env$1.getDb()
18
- );
19
- env$1.logger.info(
20
- `${types.ScheduledTaskNames.StoreCommitmentsExternal} task running: ${taskRunning}`
21
- );
22
- if (!taskRunning) {
23
- env$1.logger.info(
24
- `${types.ScheduledTaskNames.StoreCommitmentsExternal} task....`
25
- );
26
- await tasks$1.clientTaskManager.storeCommitmentsExternal().catch((err) => {
27
- env$1.logger.error(err);
28
- });
29
- }
30
- });
31
- job.start();
32
- }
33
- exports.storeCaptchasExternally = storeCaptchasExternally;
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const env = require("@prosopo/env");
4
- const types = require("@prosopo/types");
5
- const cron = require("cron");
6
- const tasks = require("../tasks/tasks.cjs");
7
- const util = require("../util.cjs");
8
- async function getClientList(pair, config) {
9
- const env$1 = new env.ProviderEnvironment(config, pair);
10
- await env$1.isReady();
11
- const tasks$1 = new tasks.Tasks(env$1);
12
- const defaultSchedule = "0 * * * *";
13
- const cronSchedule = config.scheduledTasks?.clientListScheduler ? config.scheduledTasks.clientListScheduler.schedule ? config.scheduledTasks.clientListScheduler.schedule : defaultSchedule : defaultSchedule;
14
- const job = new cron.CronJob(cronSchedule, async () => {
15
- const taskRunning = await util.checkIfTaskIsRunning(
16
- types.ScheduledTaskNames.GetClientList,
17
- env$1.getDb()
18
- );
19
- env$1.logger.info(
20
- `${types.ScheduledTaskNames.GetClientList} task running: ${taskRunning}`
21
- );
22
- if (!taskRunning) {
23
- env$1.logger.info(`${types.ScheduledTaskNames.GetClientList} task....`);
24
- await tasks$1.clientTaskManager.getClientList().catch((err) => {
25
- env$1.logger.error(err);
26
- });
27
- }
28
- });
29
- job.start();
30
- }
31
- exports.getClientList = getClientList;