lesgo 0.7.8 → 2.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.
Files changed (318) hide show
  1. package/README.md +5 -4
  2. package/bin/lesgo-scripts.sh +52 -7
  3. package/dist/config/app.d.ts +7 -0
  4. package/dist/config/app.js +9 -0
  5. package/dist/config/aws.d.ts +5 -0
  6. package/dist/config/aws.js +4 -0
  7. package/dist/config/basicAuth.d.ts +7 -0
  8. package/dist/config/basicAuth.js +8 -0
  9. package/dist/config/crypto.d.ts +10 -0
  10. package/dist/config/crypto.js +9 -0
  11. package/dist/config/dynamodb.d.ts +8 -0
  12. package/dist/config/dynamodb.js +14 -0
  13. package/dist/config/elasticache.d.ts +7 -0
  14. package/dist/config/elasticache.js +6 -0
  15. package/dist/config/index.d.ts +11 -0
  16. package/dist/config/index.js +11 -0
  17. package/dist/config/jwt.d.ts +12 -0
  18. package/dist/config/jwt.js +16 -0
  19. package/dist/config/rds.d.ts +12 -0
  20. package/dist/config/rds.js +13 -0
  21. package/dist/config/s3.d.ts +5 -0
  22. package/dist/config/s3.js +5 -0
  23. package/dist/config/secretsManager.d.ts +4 -0
  24. package/dist/config/secretsManager.js +4 -0
  25. package/dist/config/sqs.d.ts +9 -0
  26. package/dist/config/sqs.js +18 -0
  27. package/dist/exceptions/LesgoException.d.ts +6 -0
  28. package/{src → dist}/exceptions/LesgoException.js +5 -4
  29. package/dist/exceptions/index.d.ts +1 -0
  30. package/dist/exceptions/index.js +1 -0
  31. package/dist/middlewares/disconnectMiddleware.d.ts +8 -0
  32. package/dist/middlewares/disconnectMiddleware.js +78 -0
  33. package/dist/middlewares/httpMiddleware.d.ts +12 -0
  34. package/dist/middlewares/httpMiddleware.js +74 -0
  35. package/dist/middlewares/httpResponseMiddleware.d.ts +7 -0
  36. package/dist/middlewares/httpResponseMiddleware.js +128 -0
  37. package/dist/middlewares/index.d.ts +7 -0
  38. package/dist/middlewares/index.js +7 -0
  39. package/dist/middlewares/invokeCommandMiddleware.d.ts +12 -0
  40. package/dist/middlewares/invokeCommandMiddleware.js +70 -0
  41. package/dist/middlewares/sqsMiddleware.d.ts +10 -0
  42. package/dist/middlewares/sqsMiddleware.js +70 -0
  43. package/dist/middlewares/verifyBasicAuthMiddleware.d.ts +8 -0
  44. package/dist/middlewares/verifyBasicAuthMiddleware.js +59 -0
  45. package/dist/middlewares/verifyJwtMiddleware.d.ts +6 -0
  46. package/dist/middlewares/verifyJwtMiddleware.js +37 -0
  47. package/dist/services/DynamoDbService/deleteRecord.d.ts +8 -0
  48. package/dist/services/DynamoDbService/deleteRecord.js +69 -0
  49. package/dist/services/DynamoDbService/getClient.d.ts +7 -0
  50. package/dist/services/DynamoDbService/getClient.js +30 -0
  51. package/dist/services/DynamoDbService/getTableName.d.ts +2 -0
  52. package/dist/services/DynamoDbService/getTableName.js +15 -0
  53. package/dist/services/DynamoDbService/index.d.ts +6 -0
  54. package/dist/services/DynamoDbService/index.js +6 -0
  55. package/dist/services/DynamoDbService/putRecord.d.ts +8 -0
  56. package/dist/services/DynamoDbService/putRecord.js +64 -0
  57. package/dist/services/DynamoDbService/query.d.ts +7 -0
  58. package/dist/services/DynamoDbService/query.js +78 -0
  59. package/dist/services/DynamoDbService/scan.d.ts +7 -0
  60. package/dist/services/DynamoDbService/scan.js +60 -0
  61. package/dist/services/DynamoDbService/updateRecord.d.ts +9 -0
  62. package/dist/services/DynamoDbService/updateRecord.js +89 -0
  63. package/dist/services/ElastiCacheRedisService/deleteRedisCache.d.ts +3 -0
  64. package/dist/services/ElastiCacheRedisService/deleteRedisCache.js +62 -0
  65. package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.d.ts +11 -0
  66. package/dist/services/ElastiCacheRedisService/disconnectElastiCacheRedisClient.js +69 -0
  67. package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.d.ts +12 -0
  68. package/dist/services/ElastiCacheRedisService/getElastiCacheRedisClient.js +114 -0
  69. package/dist/services/ElastiCacheRedisService/getRedisCache.d.ts +3 -0
  70. package/dist/services/ElastiCacheRedisService/getRedisCache.js +70 -0
  71. package/dist/services/ElastiCacheRedisService/index.d.ts +5 -0
  72. package/dist/services/ElastiCacheRedisService/index.js +5 -0
  73. package/dist/services/ElastiCacheRedisService/setRedisCache.d.ts +6 -0
  74. package/dist/services/ElastiCacheRedisService/setRedisCache.js +77 -0
  75. package/dist/services/JWTService/decodeJwt.d.ts +7 -0
  76. package/dist/services/JWTService/decodeJwt.js +9 -0
  77. package/dist/services/JWTService/getJwtSecret.d.ts +13 -0
  78. package/dist/services/JWTService/getJwtSecret.js +54 -0
  79. package/dist/services/JWTService/index.d.ts +2 -0
  80. package/dist/services/JWTService/index.js +2 -0
  81. package/dist/services/JWTService/sign.d.ts +3 -0
  82. package/dist/services/JWTService/sign.js +31 -0
  83. package/dist/services/JWTService/verify.d.ts +7 -0
  84. package/dist/services/JWTService/verify.js +61 -0
  85. package/dist/services/LoggerService.d.ts +46 -0
  86. package/{src → dist}/services/LoggerService.js +36 -60
  87. package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.d.ts +2 -0
  88. package/dist/services/RDSAuroraMySQLProxyService/disconnectMySQLProxyClient.js +60 -0
  89. package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.d.ts +8 -0
  90. package/dist/services/RDSAuroraMySQLProxyService/getMySQLProxyClient.js +87 -0
  91. package/dist/services/RDSAuroraMySQLProxyService/index.d.ts +3 -0
  92. package/dist/services/RDSAuroraMySQLProxyService/index.js +3 -0
  93. package/dist/services/RDSAuroraMySQLProxyService/query.d.ts +4 -0
  94. package/dist/services/RDSAuroraMySQLProxyService/query.js +63 -0
  95. package/dist/services/S3Service/getClient.d.ts +4 -0
  96. package/dist/services/S3Service/getClient.js +28 -0
  97. package/dist/services/S3Service/getDownloadSignedUrl.d.ts +7 -0
  98. package/dist/services/S3Service/getDownloadSignedUrl.js +58 -0
  99. package/dist/services/S3Service/getHeadObject.d.ts +13 -0
  100. package/dist/services/S3Service/getHeadObject.js +83 -0
  101. package/dist/services/S3Service/getObject.d.ts +10 -0
  102. package/dist/services/S3Service/getObject.js +89 -0
  103. package/dist/services/S3Service/getUploadSignedUrl.d.ts +7 -0
  104. package/dist/services/S3Service/getUploadSignedUrl.js +61 -0
  105. package/dist/services/S3Service/index.d.ts +6 -0
  106. package/dist/services/S3Service/index.js +6 -0
  107. package/dist/services/S3Service/putObject.d.ts +9 -0
  108. package/dist/services/S3Service/putObject.js +77 -0
  109. package/dist/services/SQSService/deleteMessage.d.ts +9 -0
  110. package/dist/services/SQSService/deleteMessage.js +69 -0
  111. package/dist/services/SQSService/dispatch.d.ts +9 -0
  112. package/dist/services/SQSService/dispatch.js +71 -0
  113. package/dist/services/SQSService/getClient.d.ts +4 -0
  114. package/dist/services/SQSService/getClient.js +28 -0
  115. package/dist/services/SQSService/getQueueUrl.d.ts +7 -0
  116. package/dist/services/SQSService/getQueueUrl.js +25 -0
  117. package/dist/services/SQSService/index.d.ts +4 -0
  118. package/dist/services/SQSService/index.js +4 -0
  119. package/dist/services/SQSService/receiveMessages.d.ts +8 -0
  120. package/dist/services/SQSService/receiveMessages.js +65 -0
  121. package/dist/services/SecretsManagerService/getClient.d.ts +7 -0
  122. package/dist/services/SecretsManagerService/getClient.js +28 -0
  123. package/dist/services/SecretsManagerService/getSecretValue.d.ts +7 -0
  124. package/dist/services/SecretsManagerService/getSecretValue.js +65 -0
  125. package/dist/services/SecretsManagerService/index.d.ts +2 -0
  126. package/dist/services/SecretsManagerService/index.js +2 -0
  127. package/dist/services/index.d.ts +1 -0
  128. package/dist/services/index.js +1 -0
  129. package/dist/types/aws.d.ts +8 -0
  130. package/dist/types/aws.js +1 -0
  131. package/dist/utils/cache/redis/deleteCache.d.ts +19 -0
  132. package/dist/utils/cache/redis/deleteCache.js +21 -0
  133. package/dist/utils/cache/redis/getCache.d.ts +22 -0
  134. package/dist/utils/cache/redis/getCache.js +24 -0
  135. package/dist/utils/cache/redis/getClient.d.ts +30 -0
  136. package/dist/utils/cache/redis/getClient.js +32 -0
  137. package/dist/utils/cache/redis/index.d.ts +4 -0
  138. package/dist/utils/cache/redis/index.js +4 -0
  139. package/dist/utils/cache/redis/setCache.d.ts +25 -0
  140. package/dist/utils/cache/redis/setCache.js +26 -0
  141. package/dist/utils/crypto/decrypt.d.ts +33 -0
  142. package/dist/utils/crypto/decrypt.js +59 -0
  143. package/dist/utils/crypto/encrypt.d.ts +31 -0
  144. package/dist/utils/crypto/encrypt.js +41 -0
  145. package/dist/utils/crypto/hash.d.ts +31 -0
  146. package/dist/utils/crypto/hash.js +56 -0
  147. package/dist/utils/crypto/index.d.ts +3 -0
  148. package/dist/utils/crypto/index.js +3 -0
  149. package/dist/utils/crypto/validateEncryptionFields.d.ts +19 -0
  150. package/dist/utils/crypto/validateEncryptionFields.js +71 -0
  151. package/dist/utils/db/mysql/proxy/disconnect.d.ts +2 -0
  152. package/dist/utils/db/mysql/proxy/disconnect.js +5 -0
  153. package/dist/utils/db/mysql/proxy/disconnectDb.d.ts +2 -0
  154. package/dist/utils/db/mysql/proxy/disconnectDb.js +5 -0
  155. package/dist/utils/db/mysql/proxy/getClient.d.ts +4 -0
  156. package/dist/utils/db/mysql/proxy/getClient.js +5 -0
  157. package/dist/utils/db/mysql/proxy/index.d.ts +3 -0
  158. package/dist/utils/db/mysql/proxy/index.js +3 -0
  159. package/dist/utils/db/mysql/proxy/query.d.ts +4 -0
  160. package/dist/utils/db/mysql/proxy/query.js +45 -0
  161. package/dist/utils/dynamodb/deleteRecord.d.ts +5 -0
  162. package/dist/utils/dynamodb/deleteRecord.js +39 -0
  163. package/dist/utils/dynamodb/getClient.d.ts +3 -0
  164. package/dist/utils/dynamodb/getClient.js +5 -0
  165. package/dist/utils/dynamodb/index.d.ts +6 -0
  166. package/dist/utils/dynamodb/index.js +6 -0
  167. package/dist/utils/dynamodb/putRecord.d.ts +4 -0
  168. package/dist/utils/dynamodb/putRecord.js +39 -0
  169. package/dist/utils/dynamodb/query.d.ts +5 -0
  170. package/dist/utils/dynamodb/query.js +52 -0
  171. package/dist/utils/dynamodb/scan.d.ts +4 -0
  172. package/dist/utils/dynamodb/scan.js +40 -0
  173. package/dist/utils/dynamodb/updateRecord.d.ts +5 -0
  174. package/dist/utils/dynamodb/updateRecord.js +53 -0
  175. package/dist/utils/formatUnixTimestamp.d.ts +8 -0
  176. package/dist/utils/formatUnixTimestamp.js +17 -0
  177. package/dist/utils/generateUid.d.ts +13 -0
  178. package/{src → dist}/utils/generateUid.js +9 -4
  179. package/dist/utils/getCurrentDatetime.d.ts +2 -0
  180. package/dist/utils/getCurrentDatetime.js +4 -0
  181. package/dist/utils/getCurrentTimestamp.d.ts +7 -0
  182. package/dist/utils/getCurrentTimestamp.js +9 -0
  183. package/dist/utils/getJwtSubFromAuthHeader.d.ts +9 -0
  184. package/dist/utils/getJwtSubFromAuthHeader.js +24 -0
  185. package/dist/utils/index.d.ts +9 -0
  186. package/dist/utils/index.js +9 -0
  187. package/dist/utils/isDecimal.d.ts +8 -0
  188. package/dist/utils/isDecimal.js +9 -0
  189. package/dist/utils/isEmail.d.ts +9 -0
  190. package/{src → dist}/utils/isEmail.js +9 -4
  191. package/dist/utils/isEmpty.d.ts +8 -0
  192. package/dist/utils/isEmpty.js +19 -0
  193. package/dist/utils/jwt/index.d.ts +2 -0
  194. package/dist/utils/jwt/index.js +2 -0
  195. package/dist/utils/jwt/sign.d.ts +3 -0
  196. package/dist/utils/jwt/sign.js +5 -0
  197. package/dist/utils/jwt/verify.d.ts +3 -0
  198. package/dist/utils/jwt/verify.js +12 -0
  199. package/dist/utils/logger.d.ts +20 -0
  200. package/dist/utils/logger.js +38 -0
  201. package/dist/utils/s3/getClient.d.ts +3 -0
  202. package/dist/utils/s3/getClient.js +5 -0
  203. package/dist/utils/s3/getDownloadSignedUrl.d.ts +5 -0
  204. package/dist/utils/s3/getDownloadSignedUrl.js +39 -0
  205. package/dist/utils/s3/getHeadObject.d.ts +10 -0
  206. package/dist/utils/s3/getHeadObject.js +39 -0
  207. package/dist/utils/s3/getObject.d.ts +13 -0
  208. package/dist/utils/s3/getObject.js +51 -0
  209. package/dist/utils/s3/getUploadSignedUrl.d.ts +5 -0
  210. package/dist/utils/s3/getUploadSignedUrl.js +39 -0
  211. package/dist/utils/s3/index.d.ts +6 -0
  212. package/dist/utils/s3/index.js +6 -0
  213. package/dist/utils/s3/putObject.d.ts +5 -0
  214. package/dist/utils/s3/putObject.js +39 -0
  215. package/dist/utils/secretsmanager/getClient.d.ts +3 -0
  216. package/dist/utils/secretsmanager/getClient.js +5 -0
  217. package/dist/utils/secretsmanager/getSecretValue.d.ts +4 -0
  218. package/dist/utils/secretsmanager/getSecretValue.js +68 -0
  219. package/dist/utils/secretsmanager/index.d.ts +2 -0
  220. package/dist/utils/secretsmanager/index.js +2 -0
  221. package/dist/utils/sqs/deleteMessage.d.ts +5 -0
  222. package/dist/utils/sqs/deleteMessage.js +39 -0
  223. package/dist/utils/sqs/dispatch.d.ts +5 -0
  224. package/dist/utils/sqs/dispatch.js +39 -0
  225. package/dist/utils/sqs/getClient.d.ts +3 -0
  226. package/dist/utils/sqs/getClient.js +5 -0
  227. package/dist/utils/sqs/index.d.ts +4 -0
  228. package/dist/utils/sqs/index.js +4 -0
  229. package/dist/utils/sqs/receiveMessages.d.ts +5 -0
  230. package/dist/utils/sqs/receiveMessages.js +39 -0
  231. package/dist/utils/validateFields.d.ts +22 -0
  232. package/{src → dist}/utils/validateFields.js +13 -19
  233. package/package.json +145 -34
  234. package/CHANGELOG.md +0 -9
  235. package/src/exceptions/__tests__/LesgoException.spec.js +0 -24
  236. package/src/exceptions/index.js +0 -4
  237. package/src/index.js +0 -4
  238. package/src/middlewares/__mocks__/ValidationErrorException.js +0 -18
  239. package/src/middlewares/__tests__/basicAuthMiddleware.spec.js +0 -225
  240. package/src/middlewares/__tests__/clientAuthMiddleware.spec.js +0 -137
  241. package/src/middlewares/__tests__/errorHttpResponseMiddleware.spec.js +0 -190
  242. package/src/middlewares/__tests__/gzipHttpResponse.spec.js +0 -185
  243. package/src/middlewares/__tests__/httpNoOutputMiddleware.spec.js +0 -199
  244. package/src/middlewares/__tests__/normalizeHttpRequestMiddleware.spec.js +0 -181
  245. package/src/middlewares/__tests__/normalizeSQSMessageMiddleware.spec.js +0 -120
  246. package/src/middlewares/__tests__/serverAuthMiddleware.spec.js +0 -170
  247. package/src/middlewares/__tests__/successHttpResponseMiddleware.spec.js +0 -159
  248. package/src/middlewares/__tests__/verifyJwtMiddleware.spec.js +0 -222
  249. package/src/middlewares/basicAuthMiddleware.js +0 -145
  250. package/src/middlewares/clientAuthMiddleware.js +0 -82
  251. package/src/middlewares/errorHttpResponseMiddleware.js +0 -99
  252. package/src/middlewares/gzipHttpResponse.js +0 -98
  253. package/src/middlewares/httpMiddleware.js +0 -19
  254. package/src/middlewares/httpNoOutputMiddleware.js +0 -87
  255. package/src/middlewares/index.js +0 -15
  256. package/src/middlewares/normalizeHttpRequestMiddleware.js +0 -101
  257. package/src/middlewares/normalizeSQSMessageMiddleware.js +0 -67
  258. package/src/middlewares/serverAuthMiddleware.js +0 -29
  259. package/src/middlewares/successHttpResponseMiddleware.js +0 -83
  260. package/src/middlewares/verifyJwtMiddleware.js +0 -62
  261. package/src/services/AuroraDbRDSProxyService.js +0 -182
  262. package/src/services/AuroraDbService.js +0 -111
  263. package/src/services/DynamoDbService.js +0 -177
  264. package/src/services/ElastiCacheService.js +0 -17
  265. package/src/services/ElasticsearchService.js +0 -181
  266. package/src/services/FirebaseAdminService.js +0 -108
  267. package/src/services/JwtService.js +0 -52
  268. package/src/services/S3Service.js +0 -59
  269. package/src/services/SQSService.js +0 -65
  270. package/src/services/__tests__/AuroraDbRDSProxyService.spec.js +0 -278
  271. package/src/services/__tests__/AuroraDbService.spec.js +0 -211
  272. package/src/services/__tests__/AwsElasticsearchConnection.spec.js +0 -89
  273. package/src/services/__tests__/DynamoDbService.spec.js +0 -314
  274. package/src/services/__tests__/ElasticsearchService.spec.js +0 -201
  275. package/src/services/__tests__/FirebaseAdminService.spec.js +0 -356
  276. package/src/services/__tests__/JwtService.spec.js +0 -35
  277. package/src/services/__tests__/LengthAwarePaginator.spec.js +0 -223
  278. package/src/services/__tests__/LoggerService.spec.js +0 -252
  279. package/src/services/__tests__/Paginator.spec.js +0 -383
  280. package/src/services/__tests__/S3Service.spec.js +0 -55
  281. package/src/services/__tests__/SQSService.spec.js +0 -47
  282. package/src/services/__tests__/SignedRequest.spec.js +0 -103
  283. package/src/services/aws/AwsElasticsearchConnection.js +0 -59
  284. package/src/services/aws/SignedRequest.js +0 -158
  285. package/src/services/index.js +0 -19
  286. package/src/services/pagination/LengthAwarePaginator.js +0 -49
  287. package/src/services/pagination/Paginator.js +0 -260
  288. package/src/utils/__mocks__/db.js +0 -109
  289. package/src/utils/__tests__/cache.spec.js +0 -131
  290. package/src/utils/__tests__/crypto.spec.js +0 -122
  291. package/src/utils/__tests__/db.spec.js +0 -70
  292. package/src/utils/__tests__/dynamodb.spec.js +0 -27
  293. package/src/utils/__tests__/elasticsearch.spec.js +0 -43
  294. package/src/utils/__tests__/generateUid.spec.js +0 -36
  295. package/src/utils/__tests__/getJwtSubFromAuthHeader.spec.js +0 -20
  296. package/src/utils/__tests__/isDecimal.spec.js +0 -12
  297. package/src/utils/__tests__/isEmail.spec.js +0 -28
  298. package/src/utils/__tests__/isEmpty.spec.js +0 -31
  299. package/src/utils/__tests__/logger.spec.js +0 -11
  300. package/src/utils/__tests__/objectStore.spec.js +0 -67
  301. package/src/utils/__tests__/prepSQLInsertParams.spec.js +0 -46
  302. package/src/utils/__tests__/prepSQLUpdateParams.spec.js +0 -36
  303. package/src/utils/__tests__/queue.spec.js +0 -54
  304. package/src/utils/__tests__/validateFields.spec.js +0 -374
  305. package/src/utils/cache.js +0 -215
  306. package/src/utils/crypto.js +0 -77
  307. package/src/utils/db.js +0 -17
  308. package/src/utils/dynamodb.js +0 -6
  309. package/src/utils/elasticsearch.js +0 -20
  310. package/src/utils/getJwtSubFromAuthHeader.js +0 -18
  311. package/src/utils/index.js +0 -26
  312. package/src/utils/isDecimal.js +0 -2
  313. package/src/utils/isEmpty.js +0 -6
  314. package/src/utils/logger.js +0 -25
  315. package/src/utils/objectStore.js +0 -11
  316. package/src/utils/prepSQLInsertParams.js +0 -21
  317. package/src/utils/prepSQLUpdateParams.js +0 -25
  318. package/src/utils/queue.js +0 -11
@@ -1,170 +0,0 @@
1
- import serverAuthMiddleware, {
2
- serverAuthBeforeHandler,
3
- } from '../serverAuthMiddleware';
4
- import { generateBasicAuthorizationHash } from '../basicAuthMiddleware';
5
- import client from '../../../tests/__mocks__/config/client';
6
-
7
- describe('test serverAuthMiddleware middleware', () => {
8
- test.each`
9
- clientObj
10
- ${undefined}
11
- ${{}}
12
- ${{
13
- default: {
14
- key: '1111-1111-1111-1111',
15
- secret: '1111-1111-1111-1111',
16
- },
17
- }}
18
- `('should return object', ({ clientObj }) => {
19
- const result = serverAuthMiddleware({
20
- client: clientObj,
21
- });
22
-
23
- expect(result).toHaveProperty('before');
24
- expect(result).toHaveProperty('onError');
25
- });
26
- });
27
-
28
- // eslint-disable-next-line
29
- const next = () => {};
30
-
31
- describe('test serverAuthBeforeHandler with valid credentials', () => {
32
- const validBasicAuth = Buffer.from(
33
- generateBasicAuthorizationHash(
34
- client.platform_2.key,
35
- client.platform_2.secret
36
- )
37
- ).toString('base64');
38
-
39
- test.each`
40
- clientObj
41
- ${undefined}
42
- ${{}}
43
- ${{
44
- platform_2: {
45
- key: '2222-2222-2222-2222',
46
- secret: '2222-2222-2222-2222',
47
- },
48
- }}
49
- `('should return undefined when successful', ({ clientObj }) => {
50
- const handler = {
51
- event: {
52
- headers: {
53
- Authorization: `basic ${validBasicAuth}`,
54
- },
55
- site: {
56
- id: 'platform_2',
57
- },
58
- },
59
- };
60
-
61
- let hasError = false;
62
-
63
- try {
64
- serverAuthBeforeHandler(handler, next, {
65
- client: clientObj,
66
- });
67
- } catch (e) {
68
- hasError = true;
69
- }
70
-
71
- expect(hasError).toBeFalsy();
72
- });
73
-
74
- test.each`
75
- Authorization | blacklistMode
76
- ${undefined} | ${false}
77
- ${`basic ${validBasicAuth}`} | ${false}
78
- ${`Basic ${validBasicAuth}`} | ${false}
79
- ${`basic ${validBasicAuth}`} | ${true}
80
- ${`Basic ${validBasicAuth}`} | ${true}
81
- `(
82
- 'test Exception with valid credentials',
83
- ({ Authorization, blacklistMode }) => {
84
- const handler = {
85
- event: {
86
- headers: {
87
- Authorization,
88
- },
89
- site: {
90
- id: 'platform_2',
91
- },
92
- },
93
- };
94
-
95
- let hasError = false;
96
-
97
- try {
98
- serverAuthBeforeHandler(handler, next, {
99
- blacklistMode,
100
- });
101
- } catch (e) {
102
- hasError = true;
103
- }
104
-
105
- expect(hasError).toBeFalsy();
106
- }
107
- );
108
- });
109
-
110
- describe('test serverAuthBeforeHandler error handling', () => {
111
- const invalidClientKey = Buffer.from('client_key:secret_key').toString(
112
- 'base64'
113
- );
114
- const invalidSecretKey = Buffer.from(
115
- `${client.platform_2.key}:secret_key`
116
- ).toString('base64');
117
-
118
- test.each`
119
- headers | errorName | errorMessage | errorStatusCode | errorCode | blacklistMode
120
- ${{}} | ${'LesgoException'} | ${'Authorization Header is required!'} | ${403} | ${'JWT_MISSING_AUTHORIZATION_HEADER'} | ${undefined}
121
- ${{ Authorization: 'auth' }} | ${'LesgoException'} | ${'Missing Bearer token!'} | ${403} | ${'JWT_MISSING_BEARER_TOKEN'} | ${undefined}
122
- ${{ Authorization: 'basic ' }} | ${'LesgoException'} | ${'Empty basic authentication hash provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_EMPTY_BASIC_HASH'} | ${undefined}
123
- ${{ Authorization: `basic ${invalidClientKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${undefined}
124
- ${{ Authorization: `basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${undefined}
125
- ${{ Authorization: `Basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${undefined}
126
- ${{}} | ${'LesgoException'} | ${'Authorization Header is required!'} | ${403} | ${'JWT_MISSING_AUTHORIZATION_HEADER'} | ${true}
127
- ${{ Authorization: 'auth' }} | ${'LesgoException'} | ${'Missing Bearer token!'} | ${403} | ${'JWT_MISSING_BEARER_TOKEN'} | ${true}
128
- ${{ Authorization: 'basic ' }} | ${'LesgoException'} | ${'Empty basic authentication hash provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_EMPTY_BASIC_HASH'} | ${true}
129
- ${{ Authorization: `basic ${invalidClientKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${true}
130
- ${{ Authorization: `basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${true}
131
- ${{ Authorization: `Basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${true}
132
- ${{ Authorization: 'auth' }} | ${'LesgoException'} | ${'Missing Bearer token!'} | ${403} | ${'JWT_MISSING_BEARER_TOKEN'} | ${false}
133
- ${{ Authorization: 'basic ' }} | ${'LesgoException'} | ${'Empty basic authentication hash provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_EMPTY_BASIC_HASH'} | ${false}
134
- ${{ Authorization: `basic ${invalidClientKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${false}
135
- ${{ Authorization: `basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${false}
136
- ${{ Authorization: `Basic ${invalidSecretKey}` }} | ${'LesgoException'} | ${'Invalid client key or secret provided'} | ${403} | ${'Middlewares/basicAuthMiddleware::AUTH_INVALID_CLIENT_OR_SECRET_KEY'} | ${false}
137
- `(
138
- 'should throw $errorMessage when authorization header is $headers',
139
- async ({
140
- headers,
141
- errorName,
142
- errorMessage,
143
- errorStatusCode,
144
- errorCode,
145
- blacklistMode,
146
- }) => {
147
- const handler = {
148
- event: {
149
- headers,
150
- site: {
151
- id: 'platform_1',
152
- },
153
- },
154
- };
155
-
156
- try {
157
- expect(
158
- serverAuthBeforeHandler(handler, next, {
159
- blacklistMode,
160
- })
161
- ).toThrow();
162
- } catch (error) {
163
- expect(error.name).toBe(errorName);
164
- expect(error.message).toBe(errorMessage);
165
- expect(error.statusCode).toBe(errorStatusCode);
166
- expect(error.code).toBe(errorCode);
167
- }
168
- }
169
- );
170
- });
@@ -1,159 +0,0 @@
1
- import {
2
- successHttpResponseHandler,
3
- successHttpResponseAfterHandler,
4
- } from '../successHttpResponseMiddleware';
5
-
6
- describe('MiddlewareGroup: test successHttpResponseHandler middleware', () => {
7
- it('test default without parameters', async () => {
8
- const data = await successHttpResponseHandler();
9
-
10
- expect(data.headers['Access-Control-Allow-Origin']).toBe('*');
11
- expect(data.headers['Cache-Control']).toBe('no-cache');
12
-
13
- expect(data.statusCode).toBe(200);
14
-
15
- expect(typeof data.body).toBe('string');
16
-
17
- const dataBody = JSON.parse(data.body);
18
- expect(dataBody).toHaveProperty('status', 'success');
19
- expect(dataBody).toHaveProperty('data', '');
20
- expect(dataBody).toHaveProperty('_meta', {});
21
- });
22
-
23
- it('test default', async () => {
24
- const data = await successHttpResponseHandler({ response: 'Some message' });
25
-
26
- expect(data.headers['Access-Control-Allow-Origin']).toBe('*');
27
- expect(data.headers['Cache-Control']).toBe('no-cache');
28
-
29
- expect(data.statusCode).toBe(200);
30
-
31
- expect(typeof data.body).toBe('string');
32
-
33
- const dataBody = JSON.parse(data.body);
34
- expect(dataBody).toHaveProperty('status', 'success');
35
- expect(dataBody).toHaveProperty('data', 'Some message');
36
- expect(dataBody).toHaveProperty('_meta', {});
37
- });
38
-
39
- it('test with status code and event', async () => {
40
- const data = await successHttpResponseHandler({
41
- response: 'Some message',
42
- statusCode: 201,
43
- event: {
44
- someEventKey: 'someEventValue',
45
- },
46
- });
47
-
48
- expect(data.statusCode).toBe(201);
49
-
50
- const dataBody = JSON.parse(data.body);
51
- expect(dataBody).toHaveProperty('status', 'success');
52
- expect(dataBody).toHaveProperty('data', 'Some message');
53
- expect(dataBody).toHaveProperty('_meta', {});
54
- });
55
-
56
- it('test with status code and event in debug mode', async () => {
57
- const data = await successHttpResponseHandler({
58
- response: 'Some message',
59
- statusCode: 201,
60
- event: {
61
- someEventKey: 'someEventValue',
62
- },
63
- debugMode: true,
64
- });
65
-
66
- expect(data.statusCode).toBe(201);
67
-
68
- const dataBody = JSON.parse(data.body);
69
- expect(dataBody).toHaveProperty('status', 'success');
70
- expect(dataBody).toHaveProperty('data', 'Some message');
71
- expect(dataBody).toHaveProperty('_meta', {
72
- someEventKey: 'someEventValue',
73
- });
74
- });
75
-
76
- it('test with configurable header', async () => {
77
- const data = await successHttpResponseHandler({
78
- response: 'Some message',
79
- headers: {
80
- 'Access-Control-Allow-Credentials': false,
81
- 'X-Token-Id': 'token',
82
- },
83
- });
84
-
85
- expect(data.headers['Access-Control-Allow-Credentials']).toBe(false);
86
- expect(data.headers['Access-Control-Allow-Origin']).toBe('*');
87
- expect(data.headers['Cache-Control']).toBe('no-cache');
88
- expect(data.headers['X-Token-Id']).toBe('token');
89
-
90
- expect(data.statusCode).toBe(200);
91
-
92
- expect(typeof data.body).toBe('string');
93
-
94
- const dataBody = JSON.parse(data.body);
95
- expect(dataBody).toHaveProperty('status', 'success');
96
- expect(dataBody).toHaveProperty('data', 'Some message');
97
- expect(dataBody).toHaveProperty('_meta', {});
98
- });
99
-
100
- it('should call db.end() whenever a db options is set', async () => {
101
- const end = jest.fn().mockResolvedValue();
102
- await successHttpResponseHandler({
103
- response: 'Some message',
104
- headers: {
105
- 'Access-Control-Allow-Credentials': false,
106
- 'X-Token-Id': 'token',
107
- },
108
- db: {
109
- end,
110
- },
111
- });
112
-
113
- expect(end).toHaveBeenCalledTimes(1);
114
- });
115
-
116
- it('should call dbRead.end() whenever a dbRead options is set', async () => {
117
- const end = jest.fn().mockResolvedValue();
118
- await successHttpResponseHandler({
119
- response: 'Some message',
120
- headers: {
121
- 'Access-Control-Allow-Credentials': false,
122
- 'X-Token-Id': 'token',
123
- },
124
- dbRead: {
125
- end,
126
- },
127
- });
128
-
129
- expect(end).toHaveBeenCalledTimes(1);
130
- });
131
-
132
- it('should call cache.end() whenever a cache options is set', async () => {
133
- const end = jest.fn().mockResolvedValue();
134
- await successHttpResponseHandler({
135
- response: 'Some message',
136
- headers: {
137
- 'Access-Control-Allow-Credentials': false,
138
- 'X-Token-Id': 'token',
139
- },
140
- cache: {
141
- end,
142
- },
143
- });
144
-
145
- expect(end).toHaveBeenCalledTimes(1);
146
- });
147
- });
148
-
149
- describe('MiddlewareGroup: test successHttpResponseAfterHandler', () => {
150
- it('test with default parameters', async () => {
151
- const handler = {
152
- response: {},
153
- event: {},
154
- };
155
-
156
- await successHttpResponseAfterHandler(handler, () => {});
157
- expect(handler.response).toHaveProperty('statusCode', 200);
158
- });
159
- });
@@ -1,222 +0,0 @@
1
- import config from 'Config/jwt'; // eslint-disable-line import/no-unresolved
2
- import verifyJwtMiddleware, {
3
- verifyJwtMiddlewareBeforeHandler,
4
- } from '../verifyJwtMiddleware';
5
- import LesgoException from '../../exceptions/LesgoException';
6
-
7
- describe('MiddlewareGroup: test verifyJwtMiddleware middleware', () => {
8
- const handler = {
9
- event: {
10
- headers: {},
11
- queryStringParameters: null,
12
- body: null,
13
- },
14
- };
15
-
16
- it('should return before object', () => {
17
- const newHandler = {
18
- event: {
19
- ...handler.event,
20
- headers: {
21
- Authorization:
22
- 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJpc3MiOiJkb21haW4uY29tIiwiZGVwYXJ0bWVudF9pZCI6MX0.pa2TBRqdVSFUhmiglB8SD8ImthqhqZBn0stAdNRcJ3w',
23
- },
24
- },
25
- };
26
- const result = verifyJwtMiddleware(newHandler, () => {});
27
-
28
- expect(result).toHaveProperty('before');
29
- });
30
-
31
- it('test without authorization header', () => {
32
- expect(() => verifyJwtMiddlewareBeforeHandler(handler, () => {})).toThrow(
33
- new LesgoException(
34
- 'Authorization Header is required!',
35
- 'JWT_MISSING_AUTHORIZATION_HEADER',
36
- 403
37
- )
38
- );
39
- });
40
-
41
- it('test with missing bearer token', () => {
42
- const newHandler = {
43
- event: {
44
- ...handler.event,
45
- headers: {
46
- Authorization: '',
47
- },
48
- },
49
- };
50
-
51
- expect(() =>
52
- verifyJwtMiddlewareBeforeHandler(newHandler, () => {})
53
- ).toThrow(
54
- new LesgoException(
55
- 'Authorization Header is required!',
56
- 'JWT_MISSING_AUTHORIZATION_HEADER',
57
- 403
58
- )
59
- );
60
- });
61
-
62
- it('test with invalid token', () => {
63
- const newHandler = {
64
- event: {
65
- ...handler.event,
66
- headers: {
67
- Authorization: 'asdasd',
68
- },
69
- },
70
- };
71
-
72
- expect(() =>
73
- verifyJwtMiddlewareBeforeHandler(newHandler, () => {})
74
- ).toThrow(
75
- new LesgoException(
76
- 'Missing Bearer token!',
77
- 'JWT_MISSING_BEARER_TOKEN',
78
- 403
79
- )
80
- );
81
- });
82
-
83
- it('test with malformed token', () => {
84
- const newHandler = {
85
- event: {
86
- ...handler.event,
87
- headers: {
88
- Authorization: 'Bearer sdawdasdawdawdsd',
89
- },
90
- },
91
- };
92
-
93
- expect(() =>
94
- verifyJwtMiddlewareBeforeHandler(newHandler, () => {})
95
- ).toThrow(new LesgoException('jwt malformed', 'JWT_ERROR', 403));
96
- });
97
-
98
- it('test with incorrect secret key', () => {
99
- const newHandler = {
100
- event: {
101
- ...handler.event,
102
- headers: {
103
- Authorization:
104
- 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c',
105
- },
106
- },
107
- };
108
-
109
- expect(() =>
110
- verifyJwtMiddlewareBeforeHandler(newHandler, () => {})
111
- ).toThrow(new LesgoException('invalid signature', 'JWT_ERROR', 403));
112
- });
113
-
114
- it('test with invalid ISS', () => {
115
- const newHandler = {
116
- event: {
117
- ...handler.event,
118
- headers: {
119
- Authorization:
120
- 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.2r0UHtMWMcLH3VJVDtVGP2_MT8npWy-w2lsUiZSBFFI',
121
- },
122
- },
123
- };
124
-
125
- expect(() =>
126
- verifyJwtMiddlewareBeforeHandler(newHandler, () => {})
127
- ).toThrow(
128
- new LesgoException(
129
- "Token's [iss] is not valid!",
130
- 'JWT_ISS_NOT_VALID',
131
- 403
132
- )
133
- );
134
- });
135
-
136
- it('test with missing custom claim', () => {
137
- const newHandler = {
138
- event: {
139
- ...handler.event,
140
- headers: {
141
- Authorization:
142
- 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJpc3MiOiJkb21haW4uY29tIn0.grz7RVA9XuOj4TUKLefvblt6bnSz0yfFpwee1MgMnN0',
143
- },
144
- },
145
- };
146
-
147
- expect(() =>
148
- verifyJwtMiddlewareBeforeHandler(newHandler, () => {})
149
- ).toThrow(
150
- new LesgoException(
151
- `Token's custom claim [${config.customClaims.data[0]}] not found!`,
152
- 'JWT_CUSTOM_CLAIM_NOT_FOUND',
153
- 403
154
- )
155
- );
156
- });
157
-
158
- it('test with expired token', () => {
159
- const newHandler = {
160
- event: {
161
- ...handler.event,
162
- headers: {
163
- Authorization:
164
- 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJpc3MiOiJkb21haW4uY29tIiwiZXhwIjoxNTE2MjM5MDIyfQ.-S3Ym5HiC5GPiW1Zjjt4j6L-skqP4PVV5f4fIScgPTE',
165
- },
166
- },
167
- };
168
-
169
- expect(() =>
170
- verifyJwtMiddlewareBeforeHandler(newHandler, () => {})
171
- ).toThrow(new LesgoException('jwt expired', 'JWT_EXPIRED', 403));
172
- });
173
-
174
- it('test with valid token', () => {
175
- const newHandler = {
176
- event: {
177
- ...handler.event,
178
- headers: {
179
- Authorization:
180
- 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJpc3MiOiJkb21haW4uY29tIiwiZGVwYXJ0bWVudF9pZCI6MX0.pa2TBRqdVSFUhmiglB8SD8ImthqhqZBn0stAdNRcJ3w',
181
- },
182
- },
183
- };
184
-
185
- verifyJwtMiddlewareBeforeHandler(newHandler, () => {});
186
- expect(newHandler.event.decodedJwt).toMatchObject({
187
- sub: '1234567890',
188
- iss: config.iss.data[0],
189
- });
190
- });
191
-
192
- it('test with custom config', () => {
193
- const newHandler = {
194
- event: {
195
- ...handler.event,
196
- headers: {
197
- Authorization:
198
- 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJpc3MiOiJkb21haW4uY29tIiwiZGVwYXJ0bWVudF9pZCI6MX0.pa2TBRqdVSFUhmiglB8SD8ImthqhqZBn0stAdNRcJ3w',
199
- },
200
- },
201
- };
202
-
203
- verifyJwtMiddlewareBeforeHandler(newHandler, () => {}, {
204
- jwtConfig: {
205
- secret:
206
- 'c4156b94c80b7f163feabd4ff268c99eb11ce8995df370a4fd872afb4377b273',
207
- iss: {
208
- validate: true,
209
- data: ['domain.com'],
210
- },
211
- customClaims: {
212
- validate: true,
213
- data: ['department_id'],
214
- },
215
- },
216
- });
217
- expect(newHandler.event.decodedJwt).toMatchObject({
218
- sub: '1234567890',
219
- iss: config.iss.data[0],
220
- });
221
- });
222
- });
@@ -1,145 +0,0 @@
1
- import client from 'Config/client'; // eslint-disable-line import/no-unresolved
2
- import crypto from 'crypto';
3
- import LesgoException from '../exceptions/LesgoException';
4
- import { errorHttpResponseAfterHandler } from './errorHttpResponseMiddleware';
5
-
6
- const FILE = 'Middlewares/basicAuthMiddleware';
7
-
8
- const blacklistMode = opts => {
9
- if (opts && typeof opts.blacklistMode !== 'undefined') {
10
- return !!opts.blacklistMode;
11
- }
12
-
13
- return true;
14
- };
15
-
16
- export const generateBasicAuthorizationHash = (key, secret) => {
17
- return crypto
18
- .createHash('sha1')
19
- .update(`${key}:${secret}`)
20
- .digest('hex');
21
- };
22
-
23
- const getSiteId = event => {
24
- let siteId;
25
-
26
- if (event.site && event.site.id) {
27
- siteId = event.site.id;
28
- } else if (
29
- event.requestContext &&
30
- event.requestContext.site &&
31
- event.requestContext.site.id
32
- ) {
33
- siteId = event.requestContext.site.id;
34
- } else if (event.platform) {
35
- siteId = event.platform;
36
- }
37
-
38
- if (typeof siteId === 'undefined') {
39
- throw new LesgoException(
40
- 'Site ID could not be found',
41
- `${FILE}::SITE_ID_NOT_FOUND`,
42
- 403,
43
- 'Ensure that clientAuthMiddleware() is called before this Middleware'
44
- );
45
- }
46
-
47
- return siteId;
48
- };
49
-
50
- const getClient = opts => {
51
- if (opts && opts.client && Object.keys(opts.client).length > 0) {
52
- return opts.client;
53
- }
54
-
55
- return client;
56
- };
57
-
58
- const getHashFromHeaders = (headers, opts) => {
59
- const basicAuth = headers.Authorization || headers.authorization;
60
-
61
- if (typeof basicAuth === 'undefined') {
62
- if (blacklistMode(opts)) {
63
- throw new LesgoException(
64
- 'Authorization header not found',
65
- `${FILE}::AUTHORIZATION_HEADER_NOT_FOUND`,
66
- 403,
67
- 'Ensure you are have provided the basic authentication code using Authorization header'
68
- );
69
- }
70
-
71
- return '';
72
- }
73
-
74
- if (
75
- typeof basicAuth !== 'undefined' &&
76
- !basicAuth.startsWith('basic ') &&
77
- !basicAuth.startsWith('Basic ')
78
- ) {
79
- throw new LesgoException(
80
- 'Invalid authorization type provided',
81
- `${FILE}::AUTH_INVALID_AUTHORIZATION_TYPE`,
82
- 403,
83
- 'Use the basic authorization method'
84
- );
85
- }
86
-
87
- const authEncoded = basicAuth.startsWith('basic ')
88
- ? basicAuth.replace('basic ', '')
89
- : basicAuth.replace('Basic ', '');
90
-
91
- if (authEncoded.length <= 0) {
92
- throw new LesgoException(
93
- 'Empty basic authentication hash provided',
94
- `${FILE}::AUTH_EMPTY_BASIC_HASH`,
95
- 403,
96
- 'Ensure basic authentication has is provided along with the keyword "Basic"'
97
- );
98
- }
99
-
100
- const buff = Buffer.from(authEncoded, 'base64');
101
-
102
- return buff.toString('utf-8');
103
- };
104
-
105
- const validateBasicAuth = (hash, siteId, clientObject, opts) => {
106
- const site = Object.keys(clientObject).find(clientCode => {
107
- const hashIsEquals =
108
- generateBasicAuthorizationHash(
109
- clientObject[clientCode].key,
110
- clientObject[clientCode].secret
111
- ) === hash;
112
-
113
- return siteId === clientCode && hashIsEquals;
114
- });
115
-
116
- if (!site && (hash.length > 0 || (hash.length <= 0 && blacklistMode(opts)))) {
117
- throw new LesgoException(
118
- 'Invalid client key or secret provided',
119
- `${FILE}::AUTH_INVALID_CLIENT_OR_SECRET_KEY`,
120
- 403,
121
- 'Ensure you are using the correct client key or secret key provided'
122
- );
123
- }
124
- };
125
-
126
- export const verifyBasicAuthBeforeHandler = (handler, next, opts) => {
127
- const siteId = getSiteId(handler.event);
128
- const finalClient = getClient(opts);
129
- const hashFromHeader = getHashFromHeaders(handler.event.headers, opts);
130
-
131
- validateBasicAuth(hashFromHeader, siteId, finalClient, opts);
132
-
133
- next();
134
- };
135
-
136
- /* istanbul ignore next */
137
- const basicAuthMiddleware = opts => {
138
- return {
139
- before: (handler, next) =>
140
- verifyBasicAuthBeforeHandler(handler, next, opts),
141
- onError: (handler, next) => errorHttpResponseAfterHandler(handler, next),
142
- };
143
- };
144
-
145
- export default basicAuthMiddleware;