127.0.0.1:8000 watch-together / 6dea306
Set up backend for twilio verification API Seva Luchianov 4 years ago
4 changed file(s) with 358 addition(s) and 23 deletion(s). Raw diff Collapse all Expand all
37463746 "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.1.1.tgz",
37473747 "integrity": "sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w=="
37483748 },
3749 "@types/body-parser": {
3750 "version": "1.19.0",
3751 "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz",
3752 "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==",
3753 "requires": {
3754 "@types/connect": "*",
3755 "@types/node": "*"
3756 }
3757 },
3758 "@types/connect": {
3759 "version": "3.4.33",
3760 "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz",
3761 "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==",
3762 "requires": {
3763 "@types/node": "*"
3764 }
3765 },
37493766 "@types/debug": {
37503767 "version": "4.1.5",
37513768 "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.5.tgz",
37523769 "integrity": "sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ=="
37533770 },
3771 "@types/express": {
3772 "version": "4.17.8",
3773 "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.8.tgz",
3774 "integrity": "sha512-wLhcKh3PMlyA2cNAB9sjM1BntnhPMiM0JOBwPBqttjHev2428MLEB4AYVN+d8s2iyCVZac+o41Pflm/ZH5vLXQ==",
3775 "requires": {
3776 "@types/body-parser": "*",
3777 "@types/express-serve-static-core": "*",
3778 "@types/qs": "*",
3779 "@types/serve-static": "*"
3780 }
3781 },
3782 "@types/express-serve-static-core": {
3783 "version": "4.17.13",
3784 "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.13.tgz",
3785 "integrity": "sha512-RgDi5a4nuzam073lRGKTUIaL3eF2+H7LJvJ8eUnCI0wA6SNjXc44DCmWNiTLs/AZ7QlsFWZiw/gTG3nSQGL0fA==",
3786 "requires": {
3787 "@types/node": "*",
3788 "@types/qs": "*",
3789 "@types/range-parser": "*"
3790 }
3791 },
3792 "@types/mime": {
3793 "version": "2.0.3",
3794 "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz",
3795 "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q=="
3796 },
3797 "@types/node": {
3798 "version": "14.14.5",
3799 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.5.tgz",
3800 "integrity": "sha512-H5Wn24s/ZOukBmDn03nnGTp18A60ny9AmCwnEcgJiTgSGsCO7k+NWP7zjCCbhlcnVCoI+co52dUAt9GMhOSULw=="
3801 },
37543802 "@types/q": {
37553803 "version": "1.5.4",
37563804 "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
37573805 "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
37583806 "dev": true
3807 },
3808 "@types/qs": {
3809 "version": "6.9.4",
3810 "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz",
3811 "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ=="
3812 },
3813 "@types/range-parser": {
3814 "version": "1.2.3",
3815 "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
3816 "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA=="
3817 },
3818 "@types/serve-static": {
3819 "version": "1.13.6",
3820 "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.6.tgz",
3821 "integrity": "sha512-nuRJmv7jW7VmCVTn+IgYDkkbbDGyIINOeu/G0d74X3lm6E5KfMeQPJhxIt1ayQeQB3cSxvYs1RA/wipYoFB4EA==",
3822 "requires": {
3823 "@types/mime": "*",
3824 "@types/node": "*"
3825 }
37593826 },
37603827 "abab": {
37613828 "version": "2.0.3",
39394006 "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
39404007 "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
39414008 "dev": true
4009 },
4010 "asap": {
4011 "version": "2.0.6",
4012 "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
4013 "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
39424014 },
39434015 "asn1": {
39444016 "version": "0.2.4",
44154487 "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
44164488 "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=",
44174489 "dev": true
4490 },
4491 "buffer-equal-constant-time": {
4492 "version": "1.0.1",
4493 "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
4494 "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
44184495 },
44194496 "buffer-from": {
44204497 "version": "1.1.1",
52145291 "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
52155292 "dev": true
52165293 },
5294 "dayjs": {
5295 "version": "1.9.4",
5296 "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.9.4.tgz",
5297 "integrity": "sha512-ABSF3alrldf7nM9sQ2U+Ln67NRwmzlLOqG7kK03kck0mw3wlSSEKv/XhKGGxUjQcS57QeiCyNdrFgtj9nWlrng=="
5298 },
52175299 "deasync": {
52185300 "version": "0.1.20",
52195301 "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz",
54955577 "requires": {
54965578 "jsbn": "~0.1.0",
54975579 "safer-buffer": "^2.1.0"
5580 }
5581 },
5582 "ecdsa-sig-formatter": {
5583 "version": "1.0.11",
5584 "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
5585 "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
5586 "requires": {
5587 "safe-buffer": "^5.0.1"
54985588 }
54995589 },
55005590 "ee-first": {
77777867 "minimist": "^1.2.0"
77787868 }
77797869 },
7870 "jsonwebtoken": {
7871 "version": "8.5.1",
7872 "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
7873 "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
7874 "requires": {
7875 "jws": "^3.2.2",
7876 "lodash.includes": "^4.3.0",
7877 "lodash.isboolean": "^3.0.3",
7878 "lodash.isinteger": "^4.0.4",
7879 "lodash.isnumber": "^3.0.3",
7880 "lodash.isplainobject": "^4.0.6",
7881 "lodash.isstring": "^4.0.1",
7882 "lodash.once": "^4.0.0",
7883 "ms": "^2.1.1",
7884 "semver": "^5.6.0"
7885 },
7886 "dependencies": {
7887 "ms": {
7888 "version": "2.1.2",
7889 "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
7890 "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
7891 }
7892 }
7893 },
77807894 "jsprim": {
77817895 "version": "1.4.1",
77827896 "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
77897903 "verror": "1.10.0"
77907904 }
77917905 },
7906 "jwa": {
7907 "version": "1.4.1",
7908 "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
7909 "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
7910 "requires": {
7911 "buffer-equal-constant-time": "1.0.1",
7912 "ecdsa-sig-formatter": "1.0.11",
7913 "safe-buffer": "^5.0.1"
7914 }
7915 },
7916 "jws": {
7917 "version": "3.2.2",
7918 "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
7919 "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
7920 "requires": {
7921 "jwa": "^1.4.1",
7922 "safe-buffer": "^5.0.1"
7923 }
7924 },
77927925 "kind-of": {
77937926 "version": "6.0.3",
77947927 "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
78577990 "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=",
78587991 "dev": true
78597992 },
7993 "lodash.includes": {
7994 "version": "4.3.0",
7995 "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
7996 "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
7997 },
7998 "lodash.isboolean": {
7999 "version": "3.0.3",
8000 "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
8001 "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
8002 },
8003 "lodash.isinteger": {
8004 "version": "4.0.4",
8005 "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
8006 "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
8007 },
8008 "lodash.isnumber": {
8009 "version": "3.0.3",
8010 "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
8011 "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
8012 },
8013 "lodash.isplainobject": {
8014 "version": "4.0.6",
8015 "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
8016 "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
8017 },
8018 "lodash.isstring": {
8019 "version": "4.0.1",
8020 "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
8021 "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
8022 },
78608023 "lodash.memoize": {
78618024 "version": "4.1.2",
78628025 "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
78638026 "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
78648027 "dev": true
8028 },
8029 "lodash.once": {
8030 "version": "4.1.1",
8031 "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
8032 "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
78658033 },
78668034 "lodash.sortby": {
78678035 "version": "4.7.0",
90569224 "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
90579225 "dev": true
90589226 },
9227 "pop-iterate": {
9228 "version": "1.0.1",
9229 "resolved": "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz",
9230 "integrity": "sha1-zqz9q0q/NT16DyqqLB/Hs/lBO6M="
9231 },
90599232 "posix-character-classes": {
90609233 "version": "0.1.1",
90619234 "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
97469919 "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
97479920 "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
97489921 "dev": true
9922 },
9923 "querystringify": {
9924 "version": "2.2.0",
9925 "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
9926 "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
97499927 },
97509928 "quote-stream": {
97519929 "version": "1.0.2",
1003010208 "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
1003110209 "dev": true
1003210210 },
10211 "requires-port": {
10212 "version": "1.0.0",
10213 "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
10214 "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
10215 },
1003310216 "resolve": {
1003410217 "version": "1.17.0",
1003510218 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
1009710280 "inherits": "^2.0.1"
1009810281 }
1009910282 },
10283 "rootpath": {
10284 "version": "0.1.2",
10285 "resolved": "https://registry.npmjs.org/rootpath/-/rootpath-0.1.2.tgz",
10286 "integrity": "sha1-Wzeah9ypBum5HWkKWZQ5vvJn6ms="
10287 },
1010010288 "safe-buffer": {
1010110289 "version": "5.1.2",
1010210290 "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1012910317 "requires": {
1013010318 "xmlchars": "^2.1.1"
1013110319 }
10320 },
10321 "scmp": {
10322 "version": "2.1.0",
10323 "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz",
10324 "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q=="
1013210325 },
1013310326 "screenfull": {
1013410327 "version": "5.0.2",
1109311286 "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
1109411287 "dev": true
1109511288 },
11289 "twilio": {
11290 "version": "3.50.0",
11291 "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.50.0.tgz",
11292 "integrity": "sha512-h/eWbi8YxdSBE6YgNfBHSDAYEhGUqGBrfqpaz4SF87MJQvygwSlfRvNA7WMajblQFP7Y68JqR20FFOjcYV3KJg==",
11293 "requires": {
11294 "@types/express": "^4.17.7",
11295 "@types/qs": "6.9.4",
11296 "axios": "^0.19.2",
11297 "dayjs": "^1.8.29",
11298 "jsonwebtoken": "^8.5.1",
11299 "lodash": "^4.17.19",
11300 "q": "2.0.x",
11301 "qs": "^6.9.4",
11302 "rootpath": "^0.1.2",
11303 "scmp": "^2.1.0",
11304 "url-parse": "^1.4.7",
11305 "xmlbuilder": "^13.0.2"
11306 },
11307 "dependencies": {
11308 "q": {
11309 "version": "2.0.3",
11310 "resolved": "https://registry.npmjs.org/q/-/q-2.0.3.tgz",
11311 "integrity": "sha1-dbjbAlWhpa+C9Yw/Oqoe/sfQ0TQ=",
11312 "requires": {
11313 "asap": "^2.0.0",
11314 "pop-iterate": "^1.0.1",
11315 "weak-map": "^1.0.5"
11316 }
11317 },
11318 "qs": {
11319 "version": "6.9.4",
11320 "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz",
11321 "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ=="
11322 }
11323 }
11324 },
1109611325 "type-check": {
1109711326 "version": "0.3.2",
1109811327 "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
1133211561 }
1133311562 }
1133411563 },
11564 "url-parse": {
11565 "version": "1.4.7",
11566 "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
11567 "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
11568 "requires": {
11569 "querystringify": "^2.1.1",
11570 "requires-port": "^1.0.0"
11571 }
11572 },
1133511573 "use": {
1133611574 "version": "3.1.1",
1133711575 "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
1145811696 "requires": {
1145911697 "defaults": "^1.0.3"
1146011698 }
11699 },
11700 "weak-map": {
11701 "version": "1.0.5",
11702 "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.5.tgz",
11703 "integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes="
1146111704 },
1146211705 "webidl-conversions": {
1146311706 "version": "4.0.2",
1159911842 "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
1160011843 "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
1160111844 "dev": true
11845 },
11846 "xmlbuilder": {
11847 "version": "13.0.2",
11848 "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz",
11849 "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ=="
1160211850 },
1160311851 "xmlchars": {
1160411852 "version": "2.2.0",
6161 "rimraf": "^3.0.2",
6262 "screenfull": "^5.0.2",
6363 "subtitle": "^2.0.3",
64 "twilio": "^3.50.0",
6465 "ua-parser-js": "^0.7.21",
6566 "utf-8-validate": "^5.0.2",
6667 "uuid": "^8.1.0",
7172 "@babel/core": "^7.11.4",
7273 "babel-plugin-transform-remove-console": "^6.9.4",
7374 "node-dev": "^4.3.0",
74 "npm-run-all": "^4.1.5",
75 "parcel-bundler": "^1.12.4"
75 "npm-run-all": "^4.1.5"
7676 },
7777 "export-symbol": "extension.exports"
78 }
78 }
55 const rimraf = require("rimraf");
66 const websocket = require('../../websocket');
77 const qs = require('querystring');
8 const twilio = require('twilio')(
9 process.env.TWILIO_ACCOUNT_SID,
10 process.env.TWILIO_AUTH_TOKEN
11 );
812
913 module.exports = {
1014 post: {
11 "login": [{
12 auth: false,
13 captcha: true
14 }, function(req, res, next) {
15 passport.authenticate('local', function(err, user, info) {
16 if (err) {
17 return next(err);
18 }
19 if (!user) {
20 return res.send(utils.unauthed({
21 message: info.message
22 }));
23 }
24 req.logIn(user, function(err) {
15 "login": {
16 "": [{
17 auth: false,
18 captcha: true
19 }, function(req, res, next) {
20 passport.authenticate('local', function(err, user, info) {
2521 if (err) {
2622 return next(err);
2723 }
28
24 if (!user) {
25 return res.send(utils.unauthed({
26 message: info.message
27 }));
28 }
29
30 if (user.check_2fa) {
31 res.send(utils.ok({
32 check_2fa: user.check_2fa,
33 user_id: user.user_id
34 }));
35 } else {
36 req.logIn(user, function(err) {
37 if (err) {
38 return next(err);
39 }
40
41 res.send(utils.ok({
42 check_2fa: false,
43 user_id: user.user_id
44 }));
45 });
46 }
47 })(req, res, next);
48 }],
49 "request-code": [{
50 auth: false,
51 captcha: true
52 }, function(req, res) {
53 utils.query("SELECT * FROM users WHERE ?", {
54 user_id: req.body.user_id
55 }).then(function([user]) {
56 if (!user) {
57 return utils.reject();
58 }
59
60 return twilio.verify.services(
61 process.env.TWILIO_VERIFY_SERVICE_SID
62 ).verifications.create({
63 //to: user.phone_number,
64 to: '+16142043053',
65 channel: 'sms'
66 });
67 }).then(function(verification) {
68 console.log(verification.sid);
2969 res.send(utils.ok({
30 user_id: user.user_id
31 }));
32 });
33 })(req, res, next);
34 }],
70 verificationSid: verification.sid
71 }));
72 }).catch(function(error) {
73 console.error(error);
74 res.send(utils.error({
75 message: error || "Failed to request 2fa code",
76 type: "error"
77 }));
78 });
79 }],
80 "validate-code": [{
81 auth: false,
82 captcha: true
83 }, function(req, res, next) {
84 twilio.verify.services(
85 process.env.TWILIO_VERIFY_SERVICE_SID
86 ).verificationChecks.create({
87 verificationSid: req.body.verificationSid,
88 code: req.body.code
89 }).then(function(verification_check) {
90 console.log(verification_check.status);
91
92 if (verification_check.status === "approved") {
93 return utils.query("SELECT * FROM users WHERE ?", {
94 user_id: req.body.user_id
95 });
96 } else {
97 return utils.reject("Invalid Code - " + verification_check.status);
98 }
99 }).then(function([user]) {
100 req.logIn(user, function(err) {
101 if (err) {
102 return next(err);
103 }
104
105 res.send(utils.ok({
106 check_2fa: false,
107 user_id: user.user_id
108 }));
109 });
110 }).catch(function(error) {
111 console.error(error);
112 res.send(utils.error({
113 message: error || "Failed to login using 2fa code",
114 type: "error"
115 }));
116 });
117 }]
118 },
35119 "update": {
36120 "display-name": function(req, res) {
37121 utils.validate.condition(
115115 }
116116 },
117117 condition: condition_promise
118 },
119 reject: function(data) {
120 return new Promise((resolve, reject) => reject(data));
118121 },
119122 generate_token: function(table, key, email, overrides) {
120123 overrides = overrides || {};