Webhooks signature verification middleware
This commit is contained in:
parent
dc0082b1e0
commit
cc13260ef6
4 changed files with 236 additions and 136 deletions
12
package.json
12
package.json
|
@ -17,14 +17,16 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fast-glob": "^3.2.11",
|
"fast-glob": "^3.2.11",
|
||||||
"graphql": "^16.5.0",
|
"graphql": "^16.5.0",
|
||||||
"retes": "^0.27.1"
|
"jose": "^4.8.3",
|
||||||
|
"retes": "^0.29.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^17.0.36",
|
"@types/node": "^17.0.45",
|
||||||
|
"clean-publish": "^4.0.1",
|
||||||
"tsm": "^2.2.1",
|
"tsm": "^2.2.1",
|
||||||
"tsup": "^6.0.1",
|
"tsup": "^6.1.3",
|
||||||
"typescript": "^4.7.2",
|
"typescript": "^4.7.4",
|
||||||
"uvu": "^0.5.3",
|
"uvu": "^0.5.6",
|
||||||
"watchlist": "^0.3.1"
|
"watchlist": "^0.3.1"
|
||||||
},
|
},
|
||||||
"exports": {
|
"exports": {
|
||||||
|
|
225
pnpm-lock.yaml
225
pnpm-lock.yaml
|
@ -1,27 +1,31 @@
|
||||||
lockfileVersion: 5.4
|
lockfileVersion: 5.4
|
||||||
|
|
||||||
specifiers:
|
specifiers:
|
||||||
'@types/node': ^17.0.36
|
'@types/node': ^17.0.45
|
||||||
|
clean-publish: ^4.0.1
|
||||||
fast-glob: ^3.2.11
|
fast-glob: ^3.2.11
|
||||||
graphql: ^16.5.0
|
graphql: ^16.5.0
|
||||||
retes: ^0.27.1
|
jose: ^4.8.3
|
||||||
|
retes: ^0.29.4
|
||||||
tsm: ^2.2.1
|
tsm: ^2.2.1
|
||||||
tsup: ^6.0.1
|
tsup: ^6.1.3
|
||||||
typescript: ^4.7.2
|
typescript: ^4.7.4
|
||||||
uvu: ^0.5.3
|
uvu: ^0.5.6
|
||||||
watchlist: ^0.3.1
|
watchlist: ^0.3.1
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
fast-glob: 3.2.11
|
fast-glob: 3.2.11
|
||||||
graphql: 16.5.0
|
graphql: 16.5.0
|
||||||
retes: 0.27.1
|
jose: 4.8.3
|
||||||
|
retes: 0.29.4
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node': 17.0.36
|
'@types/node': 17.0.45
|
||||||
|
clean-publish: 4.0.1
|
||||||
tsm: 2.2.1
|
tsm: 2.2.1
|
||||||
tsup: 6.0.1_typescript@4.7.2
|
tsup: 6.1.3_typescript@4.7.4
|
||||||
typescript: 4.7.2
|
typescript: 4.7.4
|
||||||
uvu: 0.5.3
|
uvu: 0.5.6
|
||||||
watchlist: 0.3.1
|
watchlist: 0.3.1
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
@ -44,8 +48,8 @@ packages:
|
||||||
'@nodelib/fs.scandir': 2.1.5
|
'@nodelib/fs.scandir': 2.1.5
|
||||||
fastq: 1.13.0
|
fastq: 1.13.0
|
||||||
|
|
||||||
/@types/node/17.0.36:
|
/@types/node/17.0.45:
|
||||||
resolution: {integrity: sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==}
|
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/any-promise/1.3.0:
|
/any-promise/1.3.0:
|
||||||
|
@ -87,13 +91,13 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
fill-range: 7.0.1
|
fill-range: 7.0.1
|
||||||
|
|
||||||
/bundle-require/3.0.4_esbuild@0.14.42:
|
/bundle-require/3.0.4_esbuild@0.14.48:
|
||||||
resolution: {integrity: sha512-VXG6epB1yrLAvWVQpl92qF347/UXmncQj7J3U8kZEbdVZ1ZkQyr4hYeL/9RvcE8vVVdp53dY78Fd/3pqfRqI1A==}
|
resolution: {integrity: sha512-VXG6epB1yrLAvWVQpl92qF347/UXmncQj7J3U8kZEbdVZ1ZkQyr4hYeL/9RvcE8vVVdp53dY78Fd/3pqfRqI1A==}
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
esbuild: '>=0.13'
|
esbuild: '>=0.13'
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.14.42
|
esbuild: 0.14.48
|
||||||
load-tsconfig: 0.2.3
|
load-tsconfig: 0.2.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
@ -124,6 +128,17 @@ packages:
|
||||||
fsevents: 2.3.2
|
fsevents: 2.3.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/clean-publish/4.0.1:
|
||||||
|
resolution: {integrity: sha512-6v0bh5kQD5FDlxBgXDVNNc6KmAB7iIP/GHD91q9xsGVZT5XB9Y8TNqB7dL5u9PTZlBeLpBw+A1AseRlEEJLSWA==}
|
||||||
|
engines: {node: '>= 16.0.0'}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
cross-spawn: 7.0.3
|
||||||
|
fast-glob: 3.2.11
|
||||||
|
lilconfig: 2.0.5
|
||||||
|
micromatch: 4.0.5
|
||||||
|
dev: true
|
||||||
|
|
||||||
/commander/4.1.1:
|
/commander/4.1.1:
|
||||||
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
|
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
|
@ -171,8 +186,8 @@ packages:
|
||||||
path-type: 4.0.0
|
path-type: 4.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/esbuild-android-64/0.14.42:
|
/esbuild-android-64/0.14.48:
|
||||||
resolution: {integrity: sha512-P4Y36VUtRhK/zivqGVMqhptSrFILAGlYp0Z8r9UQqHJ3iWztRCNWnlBzD9HRx0DbueXikzOiwyOri+ojAFfW6A==}
|
resolution: {integrity: sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [android]
|
os: [android]
|
||||||
|
@ -180,8 +195,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-android-arm64/0.14.42:
|
/esbuild-android-arm64/0.14.48:
|
||||||
resolution: {integrity: sha512-0cOqCubq+RWScPqvtQdjXG3Czb3AWI2CaKw3HeXry2eoA2rrPr85HF7IpdU26UWdBXgPYtlTN1LUiuXbboROhg==}
|
resolution: {integrity: sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [android]
|
os: [android]
|
||||||
|
@ -189,8 +204,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-darwin-64/0.14.42:
|
/esbuild-darwin-64/0.14.48:
|
||||||
resolution: {integrity: sha512-ipiBdCA3ZjYgRfRLdQwP82rTiv/YVMtW36hTvAN5ZKAIfxBOyPXY7Cejp3bMXWgzKD8B6O+zoMzh01GZsCuEIA==}
|
resolution: {integrity: sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
@ -198,8 +213,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-darwin-arm64/0.14.42:
|
/esbuild-darwin-arm64/0.14.48:
|
||||||
resolution: {integrity: sha512-bU2tHRqTPOaoH/4m0zYHbFWpiYDmaA0gt90/3BMEFaM0PqVK/a6MA2V/ypV5PO0v8QxN6gH5hBPY4YJ2lopXgA==}
|
resolution: {integrity: sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
@ -207,8 +222,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-freebsd-64/0.14.42:
|
/esbuild-freebsd-64/0.14.48:
|
||||||
resolution: {integrity: sha512-75h1+22Ivy07+QvxHyhVqOdekupiTZVLN1PMwCDonAqyXd8TVNJfIRFrdL8QmSJrOJJ5h8H1I9ETyl2L8LQDaw==}
|
resolution: {integrity: sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [freebsd]
|
os: [freebsd]
|
||||||
|
@ -216,8 +231,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-freebsd-arm64/0.14.42:
|
/esbuild-freebsd-arm64/0.14.48:
|
||||||
resolution: {integrity: sha512-W6Jebeu5TTDQMJUJVarEzRU9LlKpNkPBbjqSu+GUPTHDCly5zZEQq9uHkmHHl7OKm+mQ2zFySN83nmfCeZCyNA==}
|
resolution: {integrity: sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [freebsd]
|
os: [freebsd]
|
||||||
|
@ -225,8 +240,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-linux-32/0.14.42:
|
/esbuild-linux-32/0.14.48:
|
||||||
resolution: {integrity: sha512-Ooy/Bj+mJ1z4jlWcK5Dl6SlPlCgQB9zg1UrTCeY8XagvuWZ4qGPyYEWGkT94HUsRi2hKsXvcs6ThTOjBaJSMfg==}
|
resolution: {integrity: sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
@ -234,8 +249,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-linux-64/0.14.42:
|
/esbuild-linux-64/0.14.48:
|
||||||
resolution: {integrity: sha512-2L0HbzQfbTuemUWfVqNIjOfaTRt9zsvjnme6lnr7/MO9toz/MJ5tZhjqrG6uDWDxhsaHI2/nsDgrv8uEEN2eoA==}
|
resolution: {integrity: sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
@ -243,8 +258,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-linux-arm/0.14.42:
|
/esbuild-linux-arm/0.14.48:
|
||||||
resolution: {integrity: sha512-STq69yzCMhdRaWnh29UYrLSr/qaWMm/KqwaRF1pMEK7kDiagaXhSL1zQGXbYv94GuGY/zAwzK98+6idCMUOOCg==}
|
resolution: {integrity: sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
@ -252,8 +267,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-linux-arm64/0.14.42:
|
/esbuild-linux-arm64/0.14.48:
|
||||||
resolution: {integrity: sha512-c3Ug3e9JpVr8jAcfbhirtpBauLxzYPpycjWulD71CF6ZSY26tvzmXMJYooQ2YKqDY4e/fPu5K8bm7MiXMnyxuA==}
|
resolution: {integrity: sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
@ -261,8 +276,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-linux-mips64le/0.14.42:
|
/esbuild-linux-mips64le/0.14.48:
|
||||||
resolution: {integrity: sha512-QuvpHGbYlkyXWf2cGm51LBCHx6eUakjaSrRpUqhPwjh/uvNUYvLmz2LgPTTPwCqaKt0iwL+OGVL0tXA5aDbAbg==}
|
resolution: {integrity: sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [mips64el]
|
cpu: [mips64el]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
@ -270,8 +285,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-linux-ppc64le/0.14.42:
|
/esbuild-linux-ppc64le/0.14.48:
|
||||||
resolution: {integrity: sha512-8ohIVIWDbDT+i7lCx44YCyIRrOW1MYlks9fxTo0ME2LS/fxxdoJBwHWzaDYhjvf8kNpA+MInZvyOEAGoVDrMHg==}
|
resolution: {integrity: sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [ppc64]
|
cpu: [ppc64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
@ -279,8 +294,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-linux-riscv64/0.14.42:
|
/esbuild-linux-riscv64/0.14.48:
|
||||||
resolution: {integrity: sha512-DzDqK3TuoXktPyG1Lwx7vhaF49Onv3eR61KwQyxYo4y5UKTpL3NmuarHSIaSVlTFDDpcIajCDwz5/uwKLLgKiQ==}
|
resolution: {integrity: sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [riscv64]
|
cpu: [riscv64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
@ -288,8 +303,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-linux-s390x/0.14.42:
|
/esbuild-linux-s390x/0.14.48:
|
||||||
resolution: {integrity: sha512-YFRhPCxl8nb//Wn6SiS5pmtplBi4z9yC2gLrYoYI/tvwuB1jldir9r7JwAGy1Ck4D7sE7wBN9GFtUUX/DLdcEQ==}
|
resolution: {integrity: sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [s390x]
|
cpu: [s390x]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
@ -297,8 +312,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-netbsd-64/0.14.42:
|
/esbuild-netbsd-64/0.14.48:
|
||||||
resolution: {integrity: sha512-QYSD2k+oT9dqB/4eEM9c+7KyNYsIPgzYOSrmfNGDIyJrbT1d+CFVKvnKahDKNJLfOYj8N4MgyFaU9/Ytc6w5Vw==}
|
resolution: {integrity: sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [netbsd]
|
os: [netbsd]
|
||||||
|
@ -306,8 +321,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-openbsd-64/0.14.42:
|
/esbuild-openbsd-64/0.14.48:
|
||||||
resolution: {integrity: sha512-M2meNVIKWsm2HMY7+TU9AxM7ZVwI9havdsw6m/6EzdXysyCFFSoaTQ/Jg03izjCsK17FsVRHqRe26Llj6x0MNA==}
|
resolution: {integrity: sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [openbsd]
|
os: [openbsd]
|
||||||
|
@ -315,8 +330,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-sunos-64/0.14.42:
|
/esbuild-sunos-64/0.14.48:
|
||||||
resolution: {integrity: sha512-uXV8TAZEw36DkgW8Ak3MpSJs1ofBb3Smkc/6pZ29sCAN1KzCAQzsje4sUwugf+FVicrHvlamCOlFZIXgct+iqQ==}
|
resolution: {integrity: sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [sunos]
|
os: [sunos]
|
||||||
|
@ -324,8 +339,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-windows-32/0.14.42:
|
/esbuild-windows-32/0.14.48:
|
||||||
resolution: {integrity: sha512-4iw/8qWmRICWi9ZOnJJf9sYt6wmtp3hsN4TdI5NqgjfOkBVMxNdM9Vt3626G1Rda9ya2Q0hjQRD9W1o+m6Lz6g==}
|
resolution: {integrity: sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
@ -333,8 +348,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-windows-64/0.14.42:
|
/esbuild-windows-64/0.14.48:
|
||||||
resolution: {integrity: sha512-j3cdK+Y3+a5H0wHKmLGTJcq0+/2mMBHPWkItR3vytp/aUGD/ua/t2BLdfBIzbNN9nLCRL9sywCRpOpFMx3CxzA==}
|
resolution: {integrity: sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
@ -342,8 +357,8 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild-windows-arm64/0.14.42:
|
/esbuild-windows-arm64/0.14.48:
|
||||||
resolution: {integrity: sha512-+lRAARnF+hf8J0mN27ujO+VbhPbDqJ8rCcJKye4y7YZLV6C4n3pTRThAb388k/zqF5uM0lS5O201u0OqoWSicw==}
|
resolution: {integrity: sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
@ -351,32 +366,32 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/esbuild/0.14.42:
|
/esbuild/0.14.48:
|
||||||
resolution: {integrity: sha512-V0uPZotCEHokJdNqyozH6qsaQXqmZEOiZWrXnds/zaH/0SyrIayRXWRB98CENO73MIZ9T3HBIOsmds5twWtmgw==}
|
resolution: {integrity: sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
esbuild-android-64: 0.14.42
|
esbuild-android-64: 0.14.48
|
||||||
esbuild-android-arm64: 0.14.42
|
esbuild-android-arm64: 0.14.48
|
||||||
esbuild-darwin-64: 0.14.42
|
esbuild-darwin-64: 0.14.48
|
||||||
esbuild-darwin-arm64: 0.14.42
|
esbuild-darwin-arm64: 0.14.48
|
||||||
esbuild-freebsd-64: 0.14.42
|
esbuild-freebsd-64: 0.14.48
|
||||||
esbuild-freebsd-arm64: 0.14.42
|
esbuild-freebsd-arm64: 0.14.48
|
||||||
esbuild-linux-32: 0.14.42
|
esbuild-linux-32: 0.14.48
|
||||||
esbuild-linux-64: 0.14.42
|
esbuild-linux-64: 0.14.48
|
||||||
esbuild-linux-arm: 0.14.42
|
esbuild-linux-arm: 0.14.48
|
||||||
esbuild-linux-arm64: 0.14.42
|
esbuild-linux-arm64: 0.14.48
|
||||||
esbuild-linux-mips64le: 0.14.42
|
esbuild-linux-mips64le: 0.14.48
|
||||||
esbuild-linux-ppc64le: 0.14.42
|
esbuild-linux-ppc64le: 0.14.48
|
||||||
esbuild-linux-riscv64: 0.14.42
|
esbuild-linux-riscv64: 0.14.48
|
||||||
esbuild-linux-s390x: 0.14.42
|
esbuild-linux-s390x: 0.14.48
|
||||||
esbuild-netbsd-64: 0.14.42
|
esbuild-netbsd-64: 0.14.48
|
||||||
esbuild-openbsd-64: 0.14.42
|
esbuild-openbsd-64: 0.14.48
|
||||||
esbuild-sunos-64: 0.14.42
|
esbuild-sunos-64: 0.14.48
|
||||||
esbuild-windows-32: 0.14.42
|
esbuild-windows-32: 0.14.48
|
||||||
esbuild-windows-64: 0.14.42
|
esbuild-windows-64: 0.14.48
|
||||||
esbuild-windows-arm64: 0.14.42
|
esbuild-windows-arm64: 0.14.48
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/execa/5.1.1:
|
/execa/5.1.1:
|
||||||
|
@ -517,13 +532,17 @@ packages:
|
||||||
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/jose/4.8.3:
|
||||||
|
resolution: {integrity: sha512-7rySkpW78d8LBp4YU70Wb7+OTgE3OwAALNVZxhoIhp4Kscp+p/fBkdpxGAMKxvCAMV4QfXBU9m6l9nX/vGwd2g==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/joycon/3.1.1:
|
/joycon/3.1.1:
|
||||||
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
|
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/kleur/4.1.4:
|
/kleur/4.1.5:
|
||||||
resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==}
|
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
@ -601,12 +620,12 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/object-assign/4.1.1:
|
/object-assign/4.1.1:
|
||||||
resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=}
|
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/once/1.4.0:
|
/once/1.4.0:
|
||||||
resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=}
|
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
wrappy: 1.0.2
|
wrappy: 1.0.2
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -619,7 +638,7 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/path-is-absolute/1.0.1:
|
/path-is-absolute/1.0.1:
|
||||||
resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=}
|
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
@ -678,8 +697,8 @@ packages:
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/retes/0.27.1:
|
/retes/0.29.4:
|
||||||
resolution: {integrity: sha512-qK+cQf39EIyMIR3nrLtEnRpGHneuL4gI0GFfQsFF56L71RZz9R+YfD6Aqiw1EKDukKSRrugvHLu8/ffCZg+q4g==}
|
resolution: {integrity: sha512-c6Ji2oGfXN/abuLRVLUT0/eklLuAlargjBR0Ru/FAhgmL2TtEhNl2OQ3UnFSUYXa8a6v9qrEb6UvIp0A6KlJ5w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
busboy: 1.6.0
|
busboy: 1.6.0
|
||||||
dev: false
|
dev: false
|
||||||
|
@ -688,8 +707,8 @@ packages:
|
||||||
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
|
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
|
||||||
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
||||||
|
|
||||||
/rollup/2.75.3:
|
/rollup/2.75.7:
|
||||||
resolution: {integrity: sha512-YA29fLU6MAYSaDxIQYrGGOcbXlDmG96h0krGGYObroezcQ0KgEPM3+7MtKD/qeuUbFuAJXvKZee5dA1dpwq1PQ==}
|
resolution: {integrity: sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
@ -746,8 +765,8 @@ packages:
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/sucrase/3.21.0:
|
/sucrase/3.23.0:
|
||||||
resolution: {integrity: sha512-FjAhMJjDcifARI7bZej0Bi1yekjWQHoEvWIXhLPwDhC6O4iZ5PtGb86WV56riW87hzpgB13wwBKO9vKAiWu5VQ==}
|
resolution: {integrity: sha512-xgC1xboStzGhCnRywlBf/DLmkC+SkdAKqrNCDsxGrzM0phR5oUxoFKiQNrsc2D8wDdAm03iLbSZqjHDddo3IzQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -760,7 +779,7 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/thenify-all/1.6.0:
|
/thenify-all/1.6.0:
|
||||||
resolution: {integrity: sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=}
|
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
|
||||||
engines: {node: '>=0.8'}
|
engines: {node: '>=0.8'}
|
||||||
dependencies:
|
dependencies:
|
||||||
thenify: 3.3.1
|
thenify: 3.3.1
|
||||||
|
@ -779,7 +798,7 @@ packages:
|
||||||
is-number: 7.0.0
|
is-number: 7.0.0
|
||||||
|
|
||||||
/tr46/1.0.1:
|
/tr46/1.0.1:
|
||||||
resolution: {integrity: sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=}
|
resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
punycode: 2.1.1
|
punycode: 2.1.1
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -798,11 +817,11 @@ packages:
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.14.42
|
esbuild: 0.14.48
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/tsup/6.0.1_typescript@4.7.2:
|
/tsup/6.1.3_typescript@4.7.4:
|
||||||
resolution: {integrity: sha512-2Pl1YkEEvzfg4aYgwUILaHV0wwZQKO7mNHMQChyzdCNlQqf11eug7gWk86XCb3CvRofCXBX87x73BTGjyS3cOQ==}
|
resolution: {integrity: sha512-eRpBnbfpDFng+EJNTQ90N7QAf4HAGGC7O3buHIjroKWK7D1ibk9/YnR/3cS8HsMU5T+6Oi+cnF+yU5WmCnB//Q==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -817,40 +836,40 @@ packages:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
bundle-require: 3.0.4_esbuild@0.14.42
|
bundle-require: 3.0.4_esbuild@0.14.48
|
||||||
cac: 6.7.12
|
cac: 6.7.12
|
||||||
chokidar: 3.5.3
|
chokidar: 3.5.3
|
||||||
debug: 4.3.4
|
debug: 4.3.4
|
||||||
esbuild: 0.14.42
|
esbuild: 0.14.48
|
||||||
execa: 5.1.1
|
execa: 5.1.1
|
||||||
globby: 11.1.0
|
globby: 11.1.0
|
||||||
joycon: 3.1.1
|
joycon: 3.1.1
|
||||||
postcss-load-config: 3.1.4
|
postcss-load-config: 3.1.4
|
||||||
resolve-from: 5.0.0
|
resolve-from: 5.0.0
|
||||||
rollup: 2.75.3
|
rollup: 2.75.7
|
||||||
source-map: 0.8.0-beta.0
|
source-map: 0.8.0-beta.0
|
||||||
sucrase: 3.21.0
|
sucrase: 3.23.0
|
||||||
tree-kill: 1.2.2
|
tree-kill: 1.2.2
|
||||||
typescript: 4.7.2
|
typescript: 4.7.4
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
- ts-node
|
- ts-node
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/typescript/4.7.2:
|
/typescript/4.7.4:
|
||||||
resolution: {integrity: sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A==}
|
resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==}
|
||||||
engines: {node: '>=4.2.0'}
|
engines: {node: '>=4.2.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/uvu/0.5.3:
|
/uvu/0.5.6:
|
||||||
resolution: {integrity: sha512-brFwqA3FXzilmtnIyJ+CxdkInkY/i4ErvP7uV0DnUVxQcQ55reuHphorpF+tZoVHK2MniZ/VJzI7zJQoc9T9Yw==}
|
resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
dequal: 2.0.2
|
dequal: 2.0.2
|
||||||
diff: 5.1.0
|
diff: 5.1.0
|
||||||
kleur: 4.1.4
|
kleur: 4.1.5
|
||||||
sade: 1.8.1
|
sade: 1.8.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
@ -883,7 +902,7 @@ packages:
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/wrappy/1.0.2:
|
/wrappy/1.0.2:
|
||||||
resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=}
|
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/yaml/1.10.2:
|
/yaml/1.10.2:
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
|
import crypto from "crypto";
|
||||||
|
|
||||||
|
import * as jose from "jose";
|
||||||
import type { Middleware } from "retes";
|
import type { Middleware } from "retes";
|
||||||
|
import { Response } from "retes/response";
|
||||||
|
|
||||||
import { Response } from 'retes/response';
|
import { SALEOR_DOMAIN_HEADER, SALEOR_EVENT_HEADER } from "./const";
|
||||||
|
import { jwksUrl } from "./urls";
|
||||||
import * as Const from './const';
|
|
||||||
|
|
||||||
export const withBaseURL: Middleware = (handler) => async (request) => {
|
export const withBaseURL: Middleware = (handler) => async (request) => {
|
||||||
const { host, "x-forwarded-proto": protocol = "http" } = request.headers;
|
const { host, "x-forwarded-proto": protocol = "http" } = request.headers;
|
||||||
|
@ -11,33 +14,101 @@ export const withBaseURL: Middleware = (handler) => async (request) => {
|
||||||
|
|
||||||
const response = await handler(request);
|
const response = await handler(request);
|
||||||
return response;
|
return response;
|
||||||
}
|
|
||||||
|
|
||||||
export const withSaleorDomainPresent: Middleware = (handler) => async (request) => {
|
|
||||||
const saleor_domain = request.headers[Const.SALEOR_DOMAIN_HEADER];
|
|
||||||
|
|
||||||
if (!saleor_domain) {
|
|
||||||
return Response.BadRequest({ success: false, message: "Missing Saleor domain header." });
|
|
||||||
}
|
|
||||||
|
|
||||||
return handler(request);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const withSaleorEventMatch = (expectedEvent: string): Middleware => (handler) => async (request) => {
|
export const withSaleorDomainPresent: Middleware =
|
||||||
const receivedEvent = request.headers[Const.SALEOR_EVENT_HEADER];
|
(handler) => async (request) => {
|
||||||
|
const saleor_domain = request.headers[SALEOR_DOMAIN_HEADER];
|
||||||
|
|
||||||
if (receivedEvent !== expectedEvent) {
|
if (!saleor_domain) {
|
||||||
return Response.BadRequest({ success: false, message: "Invalid Saleor Event" });
|
return Response.BadRequest({
|
||||||
}
|
success: false,
|
||||||
|
message: "Missing Saleor domain header.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return handler(request);
|
return handler(request);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const withSaleorEventMatch =
|
||||||
|
(expectedEvent: string): Middleware =>
|
||||||
|
(handler) =>
|
||||||
|
async (request) => {
|
||||||
|
const receivedEvent = request.headers[SALEOR_EVENT_HEADER];
|
||||||
|
|
||||||
|
if (receivedEvent !== expectedEvent) {
|
||||||
|
return Response.BadRequest({
|
||||||
|
success: false,
|
||||||
|
message: "Invalid Saleor Event",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return handler(request);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const withAuthTokenRequired: Middleware =
|
||||||
|
(handler) => async (request) => {
|
||||||
|
const auth_token = request.params.auth_token;
|
||||||
|
if (!auth_token) {
|
||||||
|
return Response.BadRequest({
|
||||||
|
success: false,
|
||||||
|
message: "Missing auth token.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return handler(request);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const withWebhookSignatureVerified = (
|
||||||
|
secretKey: string | undefined = undefined
|
||||||
|
): Middleware => {
|
||||||
|
return (handler) => async (request) => {
|
||||||
|
if (request.rawBody === undefined) {
|
||||||
|
return Response.InternalServerError({
|
||||||
|
success: false,
|
||||||
|
message: "Request payload already parsed.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
[SALEOR_DOMAIN_HEADER]: saleorDomain,
|
||||||
|
"saleor-signature": payloadSignature,
|
||||||
|
} = request.headers;
|
||||||
|
|
||||||
|
if (secretKey !== undefined) {
|
||||||
|
const calculatedSignature = crypto
|
||||||
|
.createHmac("sha256", secretKey)
|
||||||
|
.update(request.rawBody)
|
||||||
|
.digest("hex");
|
||||||
|
|
||||||
|
if (calculatedSignature !== payloadSignature) {
|
||||||
|
return Response.BadRequest({
|
||||||
|
success: false,
|
||||||
|
message: "Invalid signature.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const [header, _, signature] = payloadSignature.split(".");
|
||||||
|
const jws = {
|
||||||
|
protected: header,
|
||||||
|
payload: request.rawBody,
|
||||||
|
signature,
|
||||||
|
};
|
||||||
|
|
||||||
|
const jwksKey = await jose.createRemoteJWKSet(
|
||||||
|
new URL(jwksUrl(saleorDomain))
|
||||||
|
)(header, payloadSignature);
|
||||||
|
|
||||||
|
try {
|
||||||
|
await jose.flattenedVerify(jws, jwksKey);
|
||||||
|
} catch {
|
||||||
|
return Response.BadRequest({
|
||||||
|
success: false,
|
||||||
|
message: "Invalid signature.",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return handler(request);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const withAuthTokenRequired: Middleware = (handler) => async (request) => {
|
|
||||||
const auth_token = request.params.auth_token;
|
|
||||||
if (!auth_token) {
|
|
||||||
return Response.BadRequest({ success: false, message: "Missing auth token." });
|
|
||||||
}
|
|
||||||
|
|
||||||
return handler(request);
|
|
||||||
};
|
|
8
src/urls.ts
Normal file
8
src/urls.ts
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
const urlProtocol = (saleorDomain: string): string =>
|
||||||
|
saleorDomain === "localhost:8000" ? "http" : "https";
|
||||||
|
|
||||||
|
export const jwksUrl = (saleorDomain: string): string =>
|
||||||
|
`${urlProtocol(saleorDomain)}://${saleorDomain}/.well-known/jwks.json`;
|
||||||
|
|
||||||
|
export const graphQLUrl = (saleorDomain: string): string =>
|
||||||
|
`${urlProtocol(saleorDomain)}://${saleorDomain}/graphql/`;
|
Loading…
Reference in a new issue