Auth redux (#67)

* wip

* fix github and twitter oauth

* uncomment code

* integrate with reddit oauth
This commit is contained in:
tsukino
2022-12-11 17:08:32 +08:00
committed by GitHub
parent 530bf9e036
commit ab37881734
8 changed files with 212 additions and 208 deletions

View File

@@ -34,7 +34,6 @@
"@ensdomains/ensjs": "^2.0.1",
"@interep/reputation": "^0.4.0",
"@r1oga/passport-reddit": "^1.0.0",
"@superfaceai/passport-twitter-oauth2": "^1.2.0",
"@types/passport-twitter": "^1.0.37",
"@zk-kit/identity": "^1.4.1",
"@zk-kit/protocols": "^1.11.1",
@@ -66,6 +65,7 @@
"oauth-1.0a": "^2.2.6",
"passport": "^0.6.0",
"passport-github2": "^0.1.12",
"passport-twitter": "^1.0.4",
"pg": "^8.7.1",
"semaphore-lib": "git+https://github.com/akinovak/semaphore-lib.git#dev",
"sequelize": "6.26",

349
pnpm-lock.yaml generated
View File

@@ -65,6 +65,7 @@ specifiers:
oauth-1.0a: ^2.2.6
passport: ^0.6.0
passport-github2: ^0.1.12
passport-twitter: ^1.0.4
pg: ^8.7.1
prettier: ^2.7.1
pretty-quick: ^3.1.3
@@ -88,13 +89,13 @@ specifiers:
zk-chat-server: ^1.0.4
dependencies:
'@ensdomains/ensjs': 2.1.0_3cxu5zja4e2r5wmvge7mdcljwq
'@ensdomains/ensjs': 2.1.0
'@interep/reputation': 0.4.0
'@r1oga/passport-reddit': 1.0.0
'@superfaceai/passport-twitter-oauth2': 1.2.0
'@types/passport-twitter': 1.0.37
'@zk-kit/identity': 1.4.1_3cxu5zja4e2r5wmvge7mdcljwq
'@zk-kit/protocols': 1.11.1_3cxu5zja4e2r5wmvge7mdcljwq
'@zk-kit/identity': 1.4.1
'@zk-kit/protocols': 1.11.1
async-mutex: 0.3.2
bn.js: 5.2.1
body-parser: 1.20.1
@@ -108,9 +109,9 @@ dependencies:
express-async-errors: 3.1.1_express@4.18.2
express-fileupload: 1.4.0
express-session: 1.17.3
gun: 0.2020.1232_3cxu5zja4e2r5wmvge7mdcljwq
gun: 0.2020.1232
http-terminator: 3.2.0
ipfs-http-client: 56.0.3_node-fetch@3.3.0
ipfs-http-client: 56.0.3
is-ci: 3.0.1
isomorphic-fetch: 3.0.0
jsonwebtoken: 8.5.1
@@ -123,14 +124,15 @@ dependencies:
oauth-1.0a: 2.2.6
passport: 0.6.0
passport-github2: 0.1.12
passport-twitter: 1.0.4
pg: 8.8.0
semaphore-lib: github.com/akinovak/semaphore-lib/ebcfe8977cc806a9e30213866d3e240be0e72f56_n33q5lg75uob7gy3f3sspeinbi
semaphore-lib: github.com/akinovak/semaphore-lib/ebcfe8977cc806a9e30213866d3e240be0e72f56_ts-node@10.9.1
sequelize: 6.26.0_pg@8.8.0+sqlite3@5.1.2
sqlite3: 5.1.2
web3: 1.8.1_3cxu5zja4e2r5wmvge7mdcljwq
web3.storage: 4.4.0_gzgmiptxpu6id76vozowlthhem
web3: 1.8.1
web3.storage: 4.4.0_g3ycfrkjoap5ko4iul7ld4uv7u
winston: 3.8.2
zk-chat-server: 1.0.4_3cxu5zja4e2r5wmvge7mdcljwq
zk-chat-server: 1.0.4
devDependencies:
'@istanbuljs/nyc-config-typescript': 1.0.2_nyc@15.1.0
@@ -1686,7 +1688,7 @@ packages:
web3-utils: 1.8.1
dev: false
/@ensdomains/ensjs/2.1.0_3cxu5zja4e2r5wmvge7mdcljwq:
/@ensdomains/ensjs/2.1.0:
resolution:
{
integrity: sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog==,
@@ -1698,7 +1700,7 @@ packages:
'@ensdomains/resolver': 0.2.4
content-hash: 2.5.2
eth-ens-namehash: 2.0.8
ethers: 5.7.2_3cxu5zja4e2r5wmvge7mdcljwq
ethers: 5.7.2
js-sha3: 0.8.0
transitivePeerDependencies:
- bufferutil
@@ -1979,7 +1981,7 @@ packages:
'@ethersproject/logger': 5.7.0
dev: false
/@ethersproject/providers/5.7.2_3cxu5zja4e2r5wmvge7mdcljwq:
/@ethersproject/providers/5.7.2:
resolution:
{
integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==,
@@ -2004,7 +2006,7 @@ packages:
'@ethersproject/transactions': 5.7.0
'@ethersproject/web': 5.7.1
bech32: 1.1.4
ws: 7.4.6_3cxu5zja4e2r5wmvge7mdcljwq
ws: 7.4.6
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -2326,7 +2328,7 @@ packages:
slash: 3.0.0
dev: false
/@jest/core/26.6.3_n33q5lg75uob7gy3f3sspeinbi:
/@jest/core/26.6.3_ts-node@10.9.1:
resolution:
{
integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==,
@@ -2344,14 +2346,14 @@ packages:
exit: 0.1.2
graceful-fs: 4.2.10
jest-changed-files: 26.6.2
jest-config: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-config: 26.6.3_ts-node@10.9.1
jest-haste-map: 26.6.2
jest-message-util: 26.6.2
jest-regex-util: 26.0.0
jest-resolve: 26.6.2
jest-resolve-dependencies: 26.6.3
jest-runner: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-runtime: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-runner: 26.6.3_ts-node@10.9.1
jest-runtime: 26.6.3_ts-node@10.9.1
jest-snapshot: 26.6.2
jest-util: 26.6.2
jest-validate: 26.6.2
@@ -2471,7 +2473,7 @@ packages:
collect-v8-coverage: 1.0.1
dev: false
/@jest/test-sequencer/26.6.3_n33q5lg75uob7gy3f3sspeinbi:
/@jest/test-sequencer/26.6.3_ts-node@10.9.1:
resolution:
{
integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==,
@@ -2481,8 +2483,8 @@ packages:
'@jest/test-result': 26.6.2
graceful-fs: 4.2.10
jest-haste-map: 26.6.2
jest-runner: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-runtime: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-runner: 26.6.3_ts-node@10.9.1
jest-runtime: 26.6.3_ts-node@10.9.1
transitivePeerDependencies:
- bufferutil
- canvas
@@ -3039,8 +3041,8 @@ packages:
ethers: ^5.0.0
hardhat: ^2.0.0
dependencies:
ethers: 5.7.2_3cxu5zja4e2r5wmvge7mdcljwq
hardhat: 2.12.4_ai6oekurog5o4q3yb7ofvatmqe
ethers: 5.7.2
hardhat: 2.12.4_z6wznmtyb6ovnulj6iujpct7um
dev: false
/@npmcli/fs/1.1.1:
@@ -4633,7 +4635,7 @@ packages:
}
dev: true
/@zk-kit/identity/1.4.1_3cxu5zja4e2r5wmvge7mdcljwq:
/@zk-kit/identity/1.4.1:
resolution:
{
integrity: sha512-M+R0npTMAwXr1GkuCUr/jV25D7CnQWOGLS+8ClNu6Y3MAIGOOKllz6pnwLbItoezlQgDxUqCWdQKIwOw2v+RYQ==,
@@ -4641,7 +4643,7 @@ packages:
dependencies:
'@ethersproject/bignumber': 5.7.0
'@ethersproject/random': 5.7.0
circomlibjs: 0.0.8_3cxu5zja4e2r5wmvge7mdcljwq
circomlibjs: 0.0.8
js-sha256: 0.9.0
transitivePeerDependencies:
- bufferutil
@@ -4657,7 +4659,7 @@ packages:
}
dev: false
/@zk-kit/protocols/1.11.1_3cxu5zja4e2r5wmvge7mdcljwq:
/@zk-kit/protocols/1.11.1:
resolution:
{
integrity: sha512-fjjrYwZCcbKMJb3+xVdLwV6kUpRMTI9PVdC6M1zHfqEqcDebmfGmMjduoL/oFwq3wZTBNV1zQvRc96WZ0Nvrnw==,
@@ -4667,7 +4669,7 @@ packages:
'@ethersproject/solidity': 5.7.0
'@ethersproject/strings': 5.7.0
'@zk-kit/incremental-merkle-tree': 0.4.3
circomlibjs: 0.0.8_3cxu5zja4e2r5wmvge7mdcljwq
circomlibjs: 0.0.8
ffjavascript: 0.2.38
snarkjs: 0.4.27
transitivePeerDependencies:
@@ -6836,7 +6838,7 @@ packages:
fnv-plus: 1.3.1
dev: false
/circomlib/0.0.21_3cxu5zja4e2r5wmvge7mdcljwq:
/circomlib/0.0.21:
resolution:
{
integrity: sha512-8WJS4W9sJJbQv8s9vRGq28qJpRKvF9ORUS58x3I8vgfAUGL2INaRjgteksGX/mIyR+Il3w7ido27GA2ZCmZrQw==,
@@ -6847,7 +6849,7 @@ packages:
circom: 0.0.35
snarkjs: 0.1.20
typedarray-to-buffer: 3.1.5
web3: 1.8.1_3cxu5zja4e2r5wmvge7mdcljwq
web3: 1.8.1
transitivePeerDependencies:
- bufferutil
- encoding
@@ -6881,7 +6883,7 @@ packages:
web3-utils: 1.8.1
dev: false
/circomlibjs/0.0.8_3cxu5zja4e2r5wmvge7mdcljwq:
/circomlibjs/0.0.8:
resolution:
{
integrity: sha512-oZFYapLO0mfiA+i2GU/V7bRNEEPjVcwV4M444nU5lNsdSJpqLwD57m9zxTD5m/KeY7WQ3lEAC9NNKEPQHu7s1w==,
@@ -6890,7 +6892,7 @@ packages:
blake-hash: 2.0.0
blake2b: 2.1.4
ffjavascript: 0.2.57
web3: 1.8.1_3cxu5zja4e2r5wmvge7mdcljwq
web3: 1.8.1
web3-utils: 1.8.1
transitivePeerDependencies:
- bufferutil
@@ -7652,14 +7654,6 @@ packages:
engines: { node: '>= 6' }
dev: false
/data-uri-to-buffer/4.0.0:
resolution:
{
integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==,
}
engines: { node: '>= 12' }
dev: false
/data-urls/2.0.0:
resolution:
{
@@ -8125,14 +8119,14 @@ packages:
dependencies:
path-type: 4.0.0
/dns-over-http-resolver/1.2.3_node-fetch@3.3.0:
/dns-over-http-resolver/1.2.3:
resolution:
{
integrity: sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==,
}
dependencies:
debug: 4.3.4
native-fetch: 3.0.0_node-fetch@3.3.0
native-fetch: 3.0.0
receptacle: 1.3.2
transitivePeerDependencies:
- node-fetch
@@ -9230,7 +9224,7 @@ packages:
js-sha3: 0.5.7
dev: false
/eth-lib/0.1.29_3cxu5zja4e2r5wmvge7mdcljwq:
/eth-lib/0.1.29:
resolution:
{
integrity: sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==,
@@ -9240,7 +9234,7 @@ packages:
elliptic: 6.5.4
nano-json-stream-parser: 0.1.2
servify: 0.1.12
ws: 3.3.3_3cxu5zja4e2r5wmvge7mdcljwq
ws: 3.3.3
xhr-request-promise: 0.1.3
transitivePeerDependencies:
- bufferutil
@@ -9359,7 +9353,7 @@ packages:
xmlhttprequest: 1.8.0
dev: false
/ethers/5.7.2_3cxu5zja4e2r5wmvge7mdcljwq:
/ethers/5.7.2:
resolution:
{
integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==,
@@ -9383,7 +9377,7 @@ packages:
'@ethersproject/networks': 5.7.1
'@ethersproject/pbkdf2': 5.7.0
'@ethersproject/properties': 5.7.0
'@ethersproject/providers': 5.7.2_3cxu5zja4e2r5wmvge7mdcljwq
'@ethersproject/providers': 5.7.2
'@ethersproject/random': 5.7.0
'@ethersproject/rlp': 5.7.0
'@ethersproject/sha2': 5.7.0
@@ -9866,17 +9860,6 @@ packages:
}
dev: false
/fetch-blob/3.2.0:
resolution:
{
integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==,
}
engines: { node: ^12.20 || >= 14.13 }
dependencies:
node-domexception: 1.0.0
web-streams-polyfill: 3.2.1
dev: false
/ffiasm/0.1.1:
resolution:
{
@@ -10330,16 +10313,6 @@ packages:
mime-types: 2.1.35
dev: false
/formdata-polyfill/4.0.10:
resolution:
{
integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==,
}
engines: { node: '>=12.20.0' }
dependencies:
fetch-blob: 3.2.0
dev: false
/formidable/1.2.6:
resolution:
{
@@ -10849,7 +10822,7 @@ packages:
dev: false
optional: true
/gun/0.2020.1232_3cxu5zja4e2r5wmvge7mdcljwq:
/gun/0.2020.1232:
resolution:
{
integrity: sha512-/LAooFgiIwbHt6geaY76uqgrsAS0LmSVvynw7gsaJL/Irn8pZh/Irxoq0iUTcrUR2TzAK81LKLgeM/5pLQZ8Wg==,
@@ -10859,9 +10832,7 @@ packages:
bufferutil: ^4.0.1
utf-8-validate: ^5.0.2
dependencies:
bufferutil: 4.0.7
utf-8-validate: 5.0.10
ws: 7.5.9_3cxu5zja4e2r5wmvge7mdcljwq
ws: 7.5.9
optionalDependencies:
'@peculiar/webcrypto': 1.4.1
buffer: 5.7.1
@@ -10916,7 +10887,7 @@ packages:
peerDependencies:
hardhat: ^2.0.0
dependencies:
hardhat: 2.12.4_ai6oekurog5o4q3yb7ofvatmqe
hardhat: 2.12.4_z6wznmtyb6ovnulj6iujpct7um
dev: false
/hardhat-contract-sizer/2.6.1_hardhat@2.12.4:
@@ -10929,10 +10900,10 @@ packages:
dependencies:
chalk: 4.1.2
cli-table3: 0.6.3
hardhat: 2.12.4_ai6oekurog5o4q3yb7ofvatmqe
hardhat: 2.12.4_z6wznmtyb6ovnulj6iujpct7um
dev: false
/hardhat/2.12.4_ai6oekurog5o4q3yb7ofvatmqe:
/hardhat/2.12.4_z6wznmtyb6ovnulj6iujpct7um:
resolution:
{
integrity: sha512-rc9S2U/4M+77LxW1Kg7oqMMmjl81tzn5rNFARhbXKUA1am/nhfMJEujOjuKvt+ZGMiZ11PYSe8gyIpB/aRNDgw==,
@@ -10999,7 +10970,7 @@ packages:
typescript: 4.9.4
undici: 5.14.0
uuid: 8.3.2
ws: 7.5.9_3cxu5zja4e2r5wmvge7mdcljwq
ws: 7.5.9
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -11565,7 +11536,7 @@ packages:
}
engines: { node: '>=0.8.19' }
/incrementalquintree/1.0.9_kaw3hkes27yoavdhauxmefzqru:
/incrementalquintree/1.0.9_g2jjxbcmb43jaok57jen25rtje:
resolution:
{
integrity: sha512-Z0bzAyZbXCUi2Qnwmn9vMXJ8sYUmW4yrBYhF0ix1x4ngwSfR+v2HKmiSY5sOOMHtlNOAiROA7oJNQDtB6JkGcg==,
@@ -11582,10 +11553,10 @@ packages:
circomlib: 0.5.5
ffiasm: 0.1.4
ffjavascript: 0.2.57
hardhat: 2.12.4_ai6oekurog5o4q3yb7ofvatmqe
hardhat: 2.12.4_z6wznmtyb6ovnulj6iujpct7um
hardhat-artifactor: 0.2.0_hardhat@2.12.4
hardhat-contract-sizer: 2.6.1_hardhat@2.12.4
jest: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest: 26.6.3_ts-node@10.9.1
snarkjs: 0.3.60
ts-jest: 26.5.6_vxa7amr3o4p5wmsiameezakoli
typescript: 4.9.4
@@ -11770,7 +11741,7 @@ packages:
engines: { node: '>= 0.10' }
dev: false
/ipfs-car/0.7.0_node-fetch@3.3.0:
/ipfs-car/0.7.0:
resolution:
{
integrity: sha512-9ser6WWZ1ZMTCGbcVkRXUzOrpQ4SIiLfzIEnk+3LQsXbV09yeZg3ijhRuEXozEIYE68Go9JmOFshamsK9iKlNQ==,
@@ -11784,8 +11755,8 @@ packages:
browser-readablestream-to-it: 1.0.3
idb-keyval: 6.2.0
interface-blockstore: 2.0.3
ipfs-core-types: 0.8.4_node-fetch@3.3.0
ipfs-core-utils: 0.12.2_node-fetch@3.3.0
ipfs-core-types: 0.8.4
ipfs-core-utils: 0.12.2
ipfs-unixfs-exporter: 7.0.11
ipfs-unixfs-importer: 9.0.10
ipfs-utils: 9.0.9
@@ -11804,7 +11775,7 @@ packages:
- supports-color
dev: false
/ipfs-core-types/0.10.3_node-fetch@3.3.0:
/ipfs-core-types/0.10.3:
resolution:
{
integrity: sha512-GNid2lRBjR5qgScCglgk7w9Hk3TZAwPHQXxOLQx72wgyc0jF2U5NXRoKW0GRvX8NPbHmsrFszForIqxd23I1Gw==,
@@ -11813,28 +11784,28 @@ packages:
'@ipld/dag-pb': 2.1.18
interface-datastore: 6.1.1
ipfs-unixfs: 6.0.9
multiaddr: 10.0.1_node-fetch@3.3.0
multiaddr: 10.0.1
multiformats: 9.9.0
transitivePeerDependencies:
- node-fetch
- supports-color
dev: false
/ipfs-core-types/0.8.4_node-fetch@3.3.0:
/ipfs-core-types/0.8.4:
resolution:
{
integrity: sha512-sbRZA1QX3xJ6ywTiVQZMOxhlhp4osAZX2SXx3azOLxAtxmGWDMkHYt722VV4nZ2GyJy8qyk5GHQIZ0uvQnpaTg==,
}
dependencies:
interface-datastore: 6.1.1
multiaddr: 10.0.1_node-fetch@3.3.0
multiaddr: 10.0.1
multiformats: 9.9.0
transitivePeerDependencies:
- node-fetch
- supports-color
dev: false
/ipfs-core-utils/0.12.2_node-fetch@3.3.0:
/ipfs-core-utils/0.12.2:
resolution:
{
integrity: sha512-RfxP3rPhXuqKIUmTAUhmee6fmaV3A7LMnjOUikRKpSyqESz/DR7aGK7tbttMxkZdkSEr0rFXlqbyb0vVwmn0wQ==,
@@ -11845,7 +11816,7 @@ packages:
browser-readablestream-to-it: 1.0.3
debug: 4.3.4
err-code: 3.0.1
ipfs-core-types: 0.8.4_node-fetch@3.3.0
ipfs-core-types: 0.8.4
ipfs-unixfs: 6.0.9
ipfs-utils: 9.0.9
it-all: 1.0.6
@@ -11853,8 +11824,8 @@ packages:
it-peekable: 1.0.3
it-to-stream: 1.0.0
merge-options: 3.0.4
multiaddr: 10.0.1_node-fetch@3.3.0
multiaddr-to-uri: 8.0.0_node-fetch@3.3.0
multiaddr: 10.0.1
multiaddr-to-uri: 8.0.0
multiformats: 9.9.0
nanoid: 3.3.4
parse-duration: 1.0.2
@@ -11865,7 +11836,7 @@ packages:
- supports-color
dev: false
/ipfs-core-utils/0.14.3_node-fetch@3.3.0:
/ipfs-core-utils/0.14.3:
resolution:
{
integrity: sha512-aBkewVhgAj3NWXPwu6imj0wADGiGVZmJzqKzODOJsibDjkx6FGdMv8kvvqtLnK8LS/dvSk9yk32IDtuDyYoV7Q==,
@@ -11876,7 +11847,7 @@ packages:
browser-readablestream-to-it: 1.0.3
debug: 4.3.4
err-code: 3.0.1
ipfs-core-types: 0.10.3_node-fetch@3.3.0
ipfs-core-types: 0.10.3
ipfs-unixfs: 6.0.9
ipfs-utils: 9.0.9
it-all: 1.0.6
@@ -11884,8 +11855,8 @@ packages:
it-peekable: 1.0.3
it-to-stream: 1.0.0
merge-options: 3.0.4
multiaddr: 10.0.1_node-fetch@3.3.0
multiaddr-to-uri: 8.0.0_node-fetch@3.3.0
multiaddr: 10.0.1
multiaddr-to-uri: 8.0.0
multiformats: 9.9.0
nanoid: 3.3.4
parse-duration: 1.0.2
@@ -11896,7 +11867,7 @@ packages:
- supports-color
dev: false
/ipfs-http-client/56.0.3_node-fetch@3.3.0:
/ipfs-http-client/56.0.3:
resolution:
{
integrity: sha512-E3L5ylVl6BjyRUsNehvfuRBYp1hj8vQ8in4zskVPMNzXs6JiCFUbif5a6BtcAlSK4xPQyJCeLNNAWLUeFQTLNA==,
@@ -11910,13 +11881,13 @@ packages:
dag-jose: 1.0.0
debug: 4.3.4
err-code: 3.0.1
ipfs-core-types: 0.10.3_node-fetch@3.3.0
ipfs-core-utils: 0.14.3_node-fetch@3.3.0
ipfs-core-types: 0.10.3
ipfs-core-utils: 0.14.3
ipfs-utils: 9.0.9
it-first: 1.0.7
it-last: 1.0.6
merge-options: 3.0.4
multiaddr: 10.0.1_node-fetch@3.3.0
multiaddr: 10.0.1
multiformats: 9.9.0
parse-duration: 1.0.2
stream-to-it: 0.2.4
@@ -12865,7 +12836,7 @@ packages:
throat: 5.0.0
dev: false
/jest-cli/26.6.3_n33q5lg75uob7gy3f3sspeinbi:
/jest-cli/26.6.3_ts-node@10.9.1:
resolution:
{
integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==,
@@ -12873,7 +12844,7 @@ packages:
engines: { node: '>= 10.14.2' }
hasBin: true
dependencies:
'@jest/core': 26.6.3_n33q5lg75uob7gy3f3sspeinbi
'@jest/core': 26.6.3_ts-node@10.9.1
'@jest/test-result': 26.6.2
'@jest/types': 26.6.2
chalk: 4.1.2
@@ -12881,7 +12852,7 @@ packages:
graceful-fs: 4.2.10
import-local: 3.1.0
is-ci: 2.0.0
jest-config: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-config: 26.6.3_ts-node@10.9.1
jest-util: 26.6.2
jest-validate: 26.6.2
prompts: 2.4.2
@@ -12894,7 +12865,7 @@ packages:
- utf-8-validate
dev: false
/jest-config/26.6.3_n33q5lg75uob7gy3f3sspeinbi:
/jest-config/26.6.3_ts-node@10.9.1:
resolution:
{
integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==,
@@ -12907,17 +12878,17 @@ packages:
optional: true
dependencies:
'@babel/core': 7.20.5
'@jest/test-sequencer': 26.6.3_n33q5lg75uob7gy3f3sspeinbi
'@jest/test-sequencer': 26.6.3_ts-node@10.9.1
'@jest/types': 26.6.2
babel-jest: 26.6.3_@babel+core@7.20.5
chalk: 4.1.2
deepmerge: 4.2.2
glob: 7.2.3
graceful-fs: 4.2.10
jest-environment-jsdom: 26.6.2_3cxu5zja4e2r5wmvge7mdcljwq
jest-environment-jsdom: 26.6.2
jest-environment-node: 26.6.2
jest-get-type: 26.3.0
jest-jasmine2: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-jasmine2: 26.6.3_ts-node@10.9.1
jest-regex-util: 26.0.0
jest-resolve: 26.6.2
jest-util: 26.6.2
@@ -12982,7 +12953,7 @@ packages:
pretty-format: 26.6.2
dev: false
/jest-environment-jsdom/26.6.2_3cxu5zja4e2r5wmvge7mdcljwq:
/jest-environment-jsdom/26.6.2:
resolution:
{
integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==,
@@ -12995,7 +12966,7 @@ packages:
'@types/node': 14.18.34
jest-mock: 26.6.2
jest-util: 26.6.2
jsdom: 16.7.0_3cxu5zja4e2r5wmvge7mdcljwq
jsdom: 16.7.0
transitivePeerDependencies:
- bufferutil
- canvas
@@ -13060,7 +13031,7 @@ packages:
- supports-color
dev: false
/jest-jasmine2/26.6.3_n33q5lg75uob7gy3f3sspeinbi:
/jest-jasmine2/26.6.3_ts-node@10.9.1:
resolution:
{
integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==,
@@ -13080,7 +13051,7 @@ packages:
jest-each: 26.6.2
jest-matcher-utils: 26.6.2
jest-message-util: 26.6.2
jest-runtime: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-runtime: 26.6.3_ts-node@10.9.1
jest-snapshot: 26.6.2
jest-util: 26.6.2
pretty-format: 26.6.2
@@ -13200,7 +13171,7 @@ packages:
slash: 3.0.0
dev: false
/jest-runner/26.6.3_n33q5lg75uob7gy3f3sspeinbi:
/jest-runner/26.6.3_ts-node@10.9.1:
resolution:
{
integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==,
@@ -13216,13 +13187,13 @@ packages:
emittery: 0.7.2
exit: 0.1.2
graceful-fs: 4.2.10
jest-config: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-config: 26.6.3_ts-node@10.9.1
jest-docblock: 26.0.0
jest-haste-map: 26.6.2
jest-leak-detector: 26.6.2
jest-message-util: 26.6.2
jest-resolve: 26.6.2
jest-runtime: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-runtime: 26.6.3_ts-node@10.9.1
jest-util: 26.6.2
jest-worker: 26.6.2
source-map-support: 0.5.21
@@ -13235,7 +13206,7 @@ packages:
- utf-8-validate
dev: false
/jest-runtime/26.6.3_n33q5lg75uob7gy3f3sspeinbi:
/jest-runtime/26.6.3_ts-node@10.9.1:
resolution:
{
integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==,
@@ -13258,7 +13229,7 @@ packages:
exit: 0.1.2
glob: 7.2.3
graceful-fs: 4.2.10
jest-config: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-config: 26.6.3_ts-node@10.9.1
jest-haste-map: 26.6.2
jest-message-util: 26.6.2
jest-mock: 26.6.2
@@ -13386,7 +13357,7 @@ packages:
supports-color: 8.1.1
dev: true
/jest/26.6.3_n33q5lg75uob7gy3f3sspeinbi:
/jest/26.6.3_ts-node@10.9.1:
resolution:
{
integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==,
@@ -13394,9 +13365,9 @@ packages:
engines: { node: '>= 10.14.2' }
hasBin: true
dependencies:
'@jest/core': 26.6.3_n33q5lg75uob7gy3f3sspeinbi
'@jest/core': 26.6.3_ts-node@10.9.1
import-local: 3.1.0
jest-cli: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest-cli: 26.6.3_ts-node@10.9.1
transitivePeerDependencies:
- bufferutil
- canvas
@@ -13469,7 +13440,7 @@ packages:
}
dev: false
/jsdom/16.7.0_3cxu5zja4e2r5wmvge7mdcljwq:
/jsdom/16.7.0:
resolution:
{
integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==,
@@ -13506,7 +13477,7 @@ packages:
whatwg-encoding: 1.0.5
whatwg-mimetype: 2.3.0
whatwg-url: 8.7.0
ws: 7.5.9_3cxu5zja4e2r5wmvge7mdcljwq
ws: 7.5.9
xml-name-validator: 3.0.0
transitivePeerDependencies:
- bufferutil
@@ -13961,15 +13932,15 @@ packages:
uint8arrays: 3.1.1
dev: false
/libsemaphore/1.0.16_3cxu5zja4e2r5wmvge7mdcljwq:
/libsemaphore/1.0.16:
resolution:
{
integrity: sha512-Hqh3+WSqTp/cgobQPjoO2FAOq9VY4m3rlFA1SzaU9CiNzFJH1p32Wsr0xw1Qaser98YAkbmMhzgjognyRUHenw==,
}
dependencies:
circomlib: 0.0.21_3cxu5zja4e2r5wmvge7mdcljwq
circomlib: 0.0.21
ethers: 4.0.49
semaphore-merkle-tree: 1.0.13_3cxu5zja4e2r5wmvge7mdcljwq
semaphore-merkle-tree: 1.0.13
snarkjs: 0.1.20
websnark: 0.0.5
transitivePeerDependencies:
@@ -15212,27 +15183,27 @@ packages:
xtend: 4.0.2
dev: false
/multiaddr-to-uri/8.0.0_node-fetch@3.3.0:
/multiaddr-to-uri/8.0.0:
resolution:
{
integrity: sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA==,
}
deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr-to-uri
dependencies:
multiaddr: 10.0.1_node-fetch@3.3.0
multiaddr: 10.0.1
transitivePeerDependencies:
- node-fetch
- supports-color
dev: false
/multiaddr/10.0.1_node-fetch@3.3.0:
/multiaddr/10.0.1:
resolution:
{
integrity: sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==,
}
deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr
dependencies:
dns-over-http-resolver: 1.2.3_node-fetch@3.3.0
dns-over-http-resolver: 1.2.3
err-code: 3.0.1
is-ip: 3.1.0
multiformats: 9.9.0
@@ -15443,6 +15414,15 @@ packages:
abort-controller: 3.0.0
dev: false
/native-fetch/3.0.0:
resolution:
{
integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==,
}
peerDependencies:
node-fetch: '*'
dev: false
/native-fetch/3.0.0_hmwa7nplpltavckpkeobtw6pv4:
resolution:
{
@@ -15454,17 +15434,6 @@ packages:
node-fetch: /@achingbrain/node-fetch/2.6.7
dev: false
/native-fetch/3.0.0_node-fetch@3.3.0:
resolution:
{
integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==,
}
peerDependencies:
node-fetch: '*'
dependencies:
node-fetch: 3.3.0
dev: false
/natural-compare-lite/1.4.0:
resolution:
{
@@ -15549,14 +15518,6 @@ packages:
}
dev: false
/node-domexception/1.0.0:
resolution:
{
integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==,
}
engines: { node: '>=10.5.0' }
dev: false
/node-fetch/2.6.7:
resolution:
{
@@ -15572,18 +15533,6 @@ packages:
whatwg-url: 5.0.0
dev: false
/node-fetch/3.3.0:
resolution:
{
integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==,
}
engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
dependencies:
data-uri-to-buffer: 4.0.0
fetch-blob: 3.2.0
formdata-polyfill: 4.0.10
dev: false
/node-forge/1.3.1:
resolution:
{
@@ -16564,6 +16513,18 @@ packages:
passport-oauth2: 1.6.1
dev: false
/passport-oauth1/1.2.0:
resolution:
{
integrity: sha512-Sv2YWodC6jN12M/OXwmR4BIXeeIHjjbwYTQw4kS6tHK4zYzSEpxBgSJJnknBjICA5cj0ju3FSnG1XmHgIhYnLg==,
}
engines: { node: '>= 0.4.0' }
dependencies:
oauth: 0.9.15
passport-strategy: 1.0.0
utils-merge: 1.0.1
dev: false
/passport-oauth2/1.6.1:
resolution:
{
@@ -16586,6 +16547,17 @@ packages:
engines: { node: '>= 0.4.0' }
dev: false
/passport-twitter/1.0.4:
resolution:
{
integrity: sha512-qvdauqCqCJJci82mJ9hZZQ6nAv7aSHV31svL8+9H7mRlDdXCdfU6AARQrmmJu3DRmv9fvIebM7zzxR7mVufN3A==,
}
engines: { node: '>= 0.4.0' }
dependencies:
passport-oauth1: 1.2.0
xtraverse: 0.1.0
dev: false
/passport/0.6.0:
resolution:
{
@@ -18214,7 +18186,7 @@ packages:
node-gyp-build: 4.5.0
dev: false
/semaphore-merkle-tree/1.0.13_3cxu5zja4e2r5wmvge7mdcljwq:
/semaphore-merkle-tree/1.0.13:
resolution:
{
integrity: sha512-Gvlz3AI/JGtlJ5lS/ai2UeFuaaw6ksr1jBKE8wEaSF2xeHPM85GAk01cHHlzZ/PZXCBcDrMkS5TpT4Y2JDJtTA==,
@@ -18222,7 +18194,7 @@ packages:
dependencies:
'@types/jest': 24.9.1
await-lock: 1.2.1
circomlib: 0.0.21_3cxu5zja4e2r5wmvge7mdcljwq
circomlib: 0.0.21
snarkjs: 0.1.20
transitivePeerDependencies:
- bufferutil
@@ -19480,7 +19452,7 @@ packages:
}
engines: { node: '>= 0.4' }
/swarm-js/0.1.42_3cxu5zja4e2r5wmvge7mdcljwq:
/swarm-js/0.1.42:
resolution:
{
integrity: sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==,
@@ -19488,7 +19460,7 @@ packages:
dependencies:
bluebird: 3.7.2
buffer: 5.7.1
eth-lib: 0.1.29_3cxu5zja4e2r5wmvge7mdcljwq
eth-lib: 0.1.29
fs-extra: 4.0.3
got: 11.8.6
mime-types: 2.1.35
@@ -20062,7 +20034,7 @@ packages:
bs-logger: 0.2.6
buffer-from: 1.1.2
fast-json-stable-stringify: 2.1.0
jest: 26.6.3_n33q5lg75uob7gy3f3sspeinbi
jest: 26.6.3_ts-node@10.9.1
jest-util: 26.6.2
json5: 2.2.1
lodash: 4.17.21
@@ -20900,7 +20872,7 @@ packages:
}
dev: false
/web3-bzz/1.8.1_3cxu5zja4e2r5wmvge7mdcljwq:
/web3-bzz/1.8.1:
resolution:
{
integrity: sha512-dJJHS84nvpoxv6ijTMkdUSlRr5beCXNtx4UZcrFLHBva8dT63QEtKdLyDt2AyMJJdVzTCk78uir/6XtVWrdS6w==,
@@ -20910,7 +20882,7 @@ packages:
dependencies:
'@types/node': 12.20.55
got: 12.1.0
swarm-js: 0.1.42_3cxu5zja4e2r5wmvge7mdcljwq
swarm-js: 0.1.42
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -21214,7 +21186,7 @@ packages:
utf8: 3.0.0
dev: false
/web3.storage/4.4.0_gzgmiptxpu6id76vozowlthhem:
/web3.storage/4.4.0_g3ycfrkjoap5ko4iul7ld4uv7u:
resolution:
{
integrity: sha512-I48GB+cFGfSbi47e3ZmyRX/ZUi9EcrqUylZ6FG1AU8UGErG3t4svZocaXTaUnp2zZWAtbbUFsFtD/cd9FgoVjA==,
@@ -21229,7 +21201,7 @@ packages:
carbites: 1.0.6
cborg: 1.9.6
files-from-path: 0.2.6
ipfs-car: 0.7.0_node-fetch@3.3.0
ipfs-car: 0.7.0
libp2p-crypto: 0.21.2
p-retry: 4.6.2
streaming-iterables: 6.2.0
@@ -21246,7 +21218,7 @@ packages:
- typescript
dev: false
/web3/1.8.1_3cxu5zja4e2r5wmvge7mdcljwq:
/web3/1.8.1:
resolution:
{
integrity: sha512-tAqFsQhGv340C9OgRJIuoScN7f7wa1tUvsnnDUMt9YE6J4gcm7TV2Uwv+KERnzvV+xgdeuULYpsioRRNKrUvoQ==,
@@ -21254,7 +21226,7 @@ packages:
engines: { node: '>=8.0.0' }
requiresBuild: true
dependencies:
web3-bzz: 1.8.1_3cxu5zja4e2r5wmvge7mdcljwq
web3-bzz: 1.8.1
web3-core: 1.8.1
web3-eth: 1.8.1
web3-eth-personal: 1.8.1
@@ -21748,7 +21720,7 @@ packages:
mkdirp: 0.5.6
dev: false
/ws/3.3.3_3cxu5zja4e2r5wmvge7mdcljwq:
/ws/3.3.3:
resolution:
{
integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==,
@@ -21763,13 +21735,11 @@ packages:
optional: true
dependencies:
async-limiter: 1.0.1
bufferutil: 4.0.7
safe-buffer: 5.1.2
ultron: 1.1.1
utf-8-validate: 5.0.10
dev: false
/ws/7.4.6_3cxu5zja4e2r5wmvge7mdcljwq:
/ws/7.4.6:
resolution:
{
integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==,
@@ -21783,12 +21753,9 @@ packages:
optional: true
utf-8-validate:
optional: true
dependencies:
bufferutil: 4.0.7
utf-8-validate: 5.0.10
dev: false
/ws/7.5.9_3cxu5zja4e2r5wmvge7mdcljwq:
/ws/7.5.9:
resolution:
{
integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==,
@@ -21802,9 +21769,6 @@ packages:
optional: true
utf-8-validate:
optional: true
dependencies:
bufferutil: 4.0.7
utf-8-validate: 5.0.10
dev: false
/x-xss-protection/1.3.0:
@@ -21873,6 +21837,15 @@ packages:
}
dev: false
/xmldom/0.1.31:
resolution:
{
integrity: sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==,
}
engines: { node: '>=0.1' }
deprecated: Deprecated due to CVE-2021-21366 resolved in 0.5.0
dev: false
/xmlhttprequest/1.8.0:
resolution:
{
@@ -21888,6 +21861,16 @@ packages:
}
engines: { node: '>=0.4' }
/xtraverse/0.1.0:
resolution:
{
integrity: sha512-MANQdlG2hl1nQobxz1Rv8hsS1RuBS0C1N6qTOupv+9vmfrReePdxhmB2ecYjvsp4stJ80HD7erjkoF1Hd/FK9A==,
}
engines: { node: '>= 0.4.0' }
dependencies:
xmldom: 0.1.31
dev: false
/y18n/3.2.2:
resolution:
{
@@ -22094,14 +22077,14 @@ packages:
engines: { node: '>=10' }
dev: false
/zk-chat-server/1.0.4_3cxu5zja4e2r5wmvge7mdcljwq:
/zk-chat-server/1.0.4:
resolution:
{
integrity: sha512-4vMbsRMZ1bC9vl3Kyk7C48uYM/wv4ZgLDet6jmPiMGexFV9plnb+gvCfAWkGtKt6BMhzk3wMYfmU2BvlQgY7nw==,
}
dependencies:
'@zk-kit/identity': 1.4.1_3cxu5zja4e2r5wmvge7mdcljwq
'@zk-kit/protocols': 1.11.1_3cxu5zja4e2r5wmvge7mdcljwq
'@zk-kit/identity': 1.4.1
'@zk-kit/protocols': 1.11.1
axios: 0.24.0
bigint-conversion: 2.1.12
circomlib: 0.5.5
@@ -22128,7 +22111,7 @@ packages:
- utf-8-validate
dev: false
github.com/akinovak/semaphore-lib/ebcfe8977cc806a9e30213866d3e240be0e72f56_n33q5lg75uob7gy3f3sspeinbi:
github.com/akinovak/semaphore-lib/ebcfe8977cc806a9e30213866d3e240be0e72f56_ts-node@10.9.1:
resolution:
{
tarball: https://codeload.github.com/akinovak/semaphore-lib/tar.gz/ebcfe8977cc806a9e30213866d3e240be0e72f56,
@@ -22139,9 +22122,9 @@ packages:
dependencies:
bigint-conversion: 2.3.0
circomlib: 0.5.5
ethers: 5.7.2_3cxu5zja4e2r5wmvge7mdcljwq
incrementalquintree: 1.0.9_kaw3hkes27yoavdhauxmefzqru
libsemaphore: 1.0.16_3cxu5zja4e2r5wmvge7mdcljwq
ethers: 5.7.2
incrementalquintree: 1.0.9_g2jjxbcmb43jaok57jen25rtje
libsemaphore: 1.0.16
snarkjs: 0.4.27
transitivePeerDependencies:
- bufferutil

View File

@@ -5,6 +5,7 @@ export type AuthModel = {
provider: string;
username: string;
token: string;
refreshToken: string;
};
const auth = (sequelize: Sequelize) => {
@@ -15,22 +16,35 @@ const auth = (sequelize: Sequelize) => {
provider: { type: STRING },
username: { type: STRING },
token: { type: STRING },
refreshToken: { type: STRING },
},
{
indexes: [{ unique: true, fields: ['userId'] }],
indexes: [{ unique: true, fields: ['userId', 'provider'] }],
}
);
const findTokenByUserId = async (username: string) => {
const record = await model.findOne({ where: { username }, attributes: ['token'] });
const record = await model.findOne({
where: { username },
attributes: ['token', 'refreshToken'],
});
return (record?.toJSON() as AuthModel | undefined)?.token;
};
const findToken = async (username: string, provider: string) => {
const record = await model.findOne({
where: { username, provider },
attributes: ['token', 'refreshToken'],
});
return record?.toJSON() as AuthModel | undefined;
};
const upsertOne = async (data: AuthModel) => (await model.upsert(data))[0];
return {
model,
findTokenByUserId,
findToken,
upsertOne,
};
};

View File

@@ -6,6 +6,7 @@ import { Controller } from './interface';
import { makeResponse } from '../utils';
import { getProfileParams, GhProfile, RdProfile, STRATEGIES, TwProfile } from '@util/auth';
import logger from '@util/logger';
import { createHeader } from '@util/twitter';
export class AuthController extends Controller {
prefix = '/auth';
@@ -33,7 +34,13 @@ export class AuthController extends Controller {
try {
const { reputation, userId, username } = await getProfileParams(profile, provider);
const db = await this.call('db', 'getAuth');
await db.upsertOne({ provider, userId, username, token: accessToken });
await db.upsertOne({
provider,
userId,
username,
token: accessToken,
refreshToken: refreshToken,
});
return done(null, {
provider,
@@ -72,7 +79,7 @@ export class AuthController extends Controller {
next();
};
session = (req: Request, res: Response) => {
session = async (req: Request, res: Response) => {
if (req.user) {
res.status(200).json({ payload: req.user });
} else {

View File

@@ -56,7 +56,7 @@ export class InterepController extends Controller {
signUp = async (req: Request, res: Response) => {
const { identityCommitment, name, provider } = req.params;
if (!['twitter', 'github'].includes(provider))
if (!['twitter', 'github', 'reddit'].includes(provider))
throw new Error(`joining ${provider} interep groups not supported`);
let headers;
@@ -64,30 +64,31 @@ export class InterepController extends Controller {
// TODO refactor twitter with passport
if (provider === 'twitter') {
// @ts-expect-error
const { twitterToken } = req.session;
const jwtData: any = await jwt.verify(twitterToken, JWT_SECRET);
const twitterAuthDB = await this.call('db', 'getTwitterAuth');
const auth = await twitterAuthDB.findUserByToken(jwtData?.userToken);
if (!req.user?.username) throw new Error('not authenticated');
const authDb = await this.call('db', 'getAuth');
// @ts-expect-error
const { token, refreshToken } = await authDb.findToken(req.user.username, req.user.provider);
headers = createHeader(
{
url: `https://api.twitter.com/1.1/account/verify_credentials.json`,
method: 'GET',
},
auth.user_token,
auth.user_token_secret
token,
refreshToken
);
}
if (provider === 'github') {
if (provider === 'github' || provider === 'reddit') {
// @ts-expect-error
if (!req.user?.userId) throw new Error('not authenticated');
if (!req.user?.username) throw new Error('not authenticated');
const githubAuthDb = await this.call('db', 'getGithubAuth');
const authDb = await this.call('db', 'getAuth');
// @ts-expect-error
const { accessToken } = await githubAuthDb.findUserById(req.user.userId);
const { token } = await authDb.findToken(req.user.username, req.user.provider);
headers = { Authorization: `token ${accessToken}` };
headers = { Authorization: `Bearer ${token}` };
}
const resp = await fetch(

View File

@@ -1,4 +1,5 @@
import Web3 from 'web3';
// @ts-ignore
import { Contract } from 'web3-eth-contract';
import { sequelize } from '@util/sequelize';

View File

@@ -1,6 +1,6 @@
import { Strategy as GhStrategy } from 'passport-github2';
import { Strategy as RedditStrategy } from '@r1oga/passport-reddit';
import { Strategy as TwitterStrategy } from '@superfaceai/passport-twitter-oauth2';
import { Strategy as TwitterStrategy } from 'passport-twitter';
import { calculateReputation, OAuthProvider, ReputationLevel } from '@interep/reputation';
import config from './config';
@@ -15,8 +15,8 @@ const {
rdClientId,
rdClientSecret,
twCallbackUrl,
twClientId,
twClientSecret,
twConsumerKey,
twConsumerSecret,
} = config;
export const STRATEGIES = {
@@ -39,12 +39,10 @@ export const STRATEGIES = {
scope: ['identity'],
},
[OAuthProvider.TWITTER]: {
// @ts-expect-error ...
Strategy: TwitterStrategy,
options: {
clientType: 'confidential',
clientID: twClientId,
clientSecret: twClientSecret,
consumerKey: twConsumerKey,
consumerSecret: twConsumerSecret,
callbackURL: twCallbackUrl,
},
scope: ['tweet.read', 'users.read', 'offline.access', 'follows.read'],

View File

@@ -263,7 +263,7 @@ export async function getUser(username: string): Promise<{
export async function getBotometerScore(username: string): Promise<any> {
const res = await botometer.getScore(username);
return res?.display_scores?.universal?.overall;
return res?.display_scores?.universal?.overall || 5;
}
export async function getTwitterUserMetrics(userId: string) {