diff --git a/game-server/package-lock.json b/game-server/package-lock.json index 565fe14f6..94d01183d 100644 --- a/game-server/package-lock.json +++ b/game-server/package-lock.json @@ -67,6 +67,11 @@ "@types/node": "*" } }, + "@types/caseless": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", + "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==" + }, "@types/chai": { "version": "4.2.14", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.14.tgz", @@ -129,6 +134,26 @@ "@types/node": "*" } }, + "@types/request": { + "version": "2.48.5", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz", + "integrity": "sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ==", + "requires": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "@types/request-promise": { + "version": "4.1.47", + "resolved": "https://registry.npmjs.org/@types/request-promise/-/request-promise-4.1.47.tgz", + "integrity": "sha512-eRSZhAS8SMsrWOM8vbhxFGVZhTbWSJvaRKyufJTdIf4gscUouQvOBlfotPSPHbMR3S7kfkyKbhb1SWPmQdy3KQ==", + "requires": { + "@types/bluebird": "*", + "@types/request": "*" + } + }, "@types/socket.io": { "version": "2.1.10", "resolved": "https://registry.npm.taobao.org/@types/socket.io/download/@types/socket.io-2.1.10.tgz", @@ -138,6 +163,11 @@ "@types/node": "*" } }, + "@types/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==" + }, "@types/underscore": { "version": "1.10.24", "resolved": "https://registry.npm.taobao.org/@types/underscore/download/@types/underscore-1.10.24.tgz", @@ -256,6 +286,11 @@ "resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz", "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=" }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npm.taobao.org/backo2/download/backo2-1.0.2.tgz", @@ -520,6 +555,14 @@ "resolved": "https://registry.npm.taobao.org/colors/download/colors-1.0.3.tgz", "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "3.0.2", "resolved": "https://registry.npm.taobao.org/commander/download/commander-3.0.2.tgz?cache=0&sync_timestamp=1595168120323&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-3.0.2.tgz", @@ -639,6 +682,11 @@ "object-keys": "^1.0.12" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -817,6 +865,16 @@ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-8.1.0.tgz", @@ -2177,6 +2235,16 @@ "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz", "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=" }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, "random-to": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/random-to/-/random-to-0.0.2.tgz", @@ -2285,6 +2353,25 @@ "resolved": "https://registry.npm.taobao.org/regexp-clone/download/regexp-clone-1.0.0.tgz", "integrity": "sha1-Ii25Z2IydwViYLmSYmNUoEzpv2M=" }, + "request-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", + "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", + "requires": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "requires": { + "lodash": "^4.17.19" + } + }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz", @@ -2532,6 +2619,11 @@ "resolved": "https://registry.npm.taobao.org/stack-trace/download/stack-trace-0.0.10.tgz?cache=0&sync_timestamp=1575992264808&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstack-trace%2Fdownload%2Fstack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, "stream-pkg": { "version": "0.0.5", "resolved": "https://registry.npm.taobao.org/stream-pkg/download/stream-pkg-0.0.5.tgz", @@ -2676,6 +2768,15 @@ "is-number": "^7.0.0" } }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, "ts-node": { "version": "8.10.2", "resolved": "https://registry.npm.taobao.org/ts-node/download/ts-node-8.10.2.tgz?cache=0&sync_timestamp=1590685779800&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fts-node%2Fdownload%2Fts-node-8.10.2.tgz", diff --git a/game-server/package.json b/game-server/package.json index 855d10c35..c0faa1ef1 100644 --- a/game-server/package.json +++ b/game-server/package.json @@ -24,6 +24,7 @@ "@types/mongoose": "^5.7.36", "@types/node": "8.10.54", "@types/redis": "^2.8.25", + "@types/request-promise": "^4.1.47", "@types/underscore": "^1.10.24", "bcrypt": "^5.0.0", "bluebird": "^3.5.1", @@ -46,6 +47,7 @@ "redis": "^3.0.2", "redlock": "^4.2.0", "reflect-metadata": "^0.1.10", + "request-promise": "^4.2.6", "source-map-support": "^0.5.0", "ts-node": "^8.2.0" }, diff --git a/package-lock.json b/package-lock.json index 2742dfad2..d3db0bb13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,11 @@ } } }, + "@types/bluebird": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.33.tgz", + "integrity": "sha512-ndEo1xvnYeHxm7I/5sF6tBvnsA4Tdi3zj1keRKRs12SP+2ye2A27NDJ1B6PqkfMbGAcT+mqQVqbZRIrhfOp5PQ==" + }, "@types/bson": { "version": "4.0.2", "resolved": "https://registry.npm.taobao.org/@types/bson/download/@types/bson-4.0.2.tgz", @@ -31,6 +36,11 @@ "@types/node": "*" } }, + "@types/caseless": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", + "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==" + }, "@types/mongodb": { "version": "3.5.27", "resolved": "https://registry.npm.taobao.org/@types/mongodb/download/@types/mongodb-3.5.27.tgz?cache=0&sync_timestamp=1599138259359&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fmongodb%2Fdownload%2F%40types%2Fmongodb-3.5.27.tgz", @@ -54,6 +64,31 @@ "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-14.10.0.tgz?cache=0&sync_timestamp=1599757029267&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.10.0.tgz", "integrity": "sha1-FYFd/4LI3DCCf2sShvhlkClFCVo=" }, + "@types/request": { + "version": "2.48.5", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz", + "integrity": "sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ==", + "requires": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "@types/request-promise": { + "version": "4.1.47", + "resolved": "https://registry.npmjs.org/@types/request-promise/-/request-promise-4.1.47.tgz", + "integrity": "sha512-eRSZhAS8SMsrWOM8vbhxFGVZhTbWSJvaRKyufJTdIf4gscUouQvOBlfotPSPHbMR3S7kfkyKbhb1SWPmQdy3KQ==", + "requires": { + "@types/bluebird": "*", + "@types/request": "*" + } + }, + "@types/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==" + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -87,6 +122,11 @@ "es-abstract": "^1.17.0-next.1" } }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -157,6 +197,14 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -200,6 +248,11 @@ "object-keys": "^1.0.12" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -248,6 +301,16 @@ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==" }, + "form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, "fs-minipass": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", @@ -417,6 +480,19 @@ "integrity": "sha1-2HUWVdItOEaCdByXLyw9bfo+ZrU=", "optional": true }, + "mime-db": { + "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==" + }, + "mime-types": { + "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", + "requires": { + "mime-db": "1.46.0" + } + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -714,6 +790,16 @@ "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz", "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=" }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, "random-to": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/random-to/-/random-to-0.0.2.tgz", @@ -761,6 +847,25 @@ "resolved": "https://registry.npm.taobao.org/regexp-clone/download/regexp-clone-1.0.0.tgz", "integrity": "sha1-Ii25Z2IydwViYLmSYmNUoEzpv2M=" }, + "request-promise": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", + "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", + "requires": { + "bluebird": "^3.5.0", + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "requires": { + "lodash": "^4.17.19" + } + }, "require_optional": { "version": "1.0.1", "resolved": "https://registry.npm.taobao.org/require_optional/download/require_optional-1.0.1.tgz", @@ -841,6 +946,11 @@ "memory-pager": "^1.0.2" } }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -911,6 +1021,15 @@ "yallist": "^3.0.3" } }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, "tslib": { "version": "2.0.1", "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-2.0.1.tgz?cache=0&sync_timestamp=1596751904317&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftslib%2Fdownload%2Ftslib-2.0.1.tgz", diff --git a/package.json b/package.json index 834becb6b..0a612e4cb 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "dependencies": { "@typegoose/typegoose": "^7.3.5", "@types/mongoose": "^5.7.36", + "@types/request-promise": "^4.1.47", "bcrypt": "^5.0.0", "chinese-random-name": "^1.0.0", "lodash": "^4.17.20", @@ -14,6 +15,7 @@ "mongoose-lean-getters": "^0.1.2", "mongoose-lean-virtuals": "^0.7.6", "mongoose-transactions": "^1.1.4", + "request-promise": "^4.2.6", "underscore": "^1.12.0" }, "devDependencies": {}, diff --git a/shared/consts/constModules/httpConst.ts b/shared/consts/constModules/httpConst.ts new file mode 100644 index 000000000..558bab778 --- /dev/null +++ b/shared/consts/constModules/httpConst.ts @@ -0,0 +1,5 @@ +export enum BANTU_VID_ADDR { + HOST = 'https://sdks.trgame.cn', + IDCARD = '/vid/idcard' // 实名认证 +} +export const BANTU_VID_APP_KEY = '05c1c495369769e3c5d98426e9c8c2c0'; diff --git a/shared/consts/index.ts b/shared/consts/index.ts index 255d959f5..981e596f9 100644 --- a/shared/consts/index.ts +++ b/shared/consts/index.ts @@ -6,5 +6,6 @@ export * from './constModules/itemConst'; export * from './constModules/sysConst'; export * from './constModules/guildConst'; export * from './constModules/selectConst'; +export * from './constModules/httpConst'; export * from './statusCode'; export * from './dataName'; \ No newline at end of file diff --git a/shared/consts/statusCode.ts b/shared/consts/statusCode.ts index b47e4f0f9..79c8dc700 100644 --- a/shared/consts/statusCode.ts +++ b/shared/consts/statusCode.ts @@ -21,6 +21,7 @@ export const STATUS = { PASSWORD_ILLEGEL: { code: 10010, simStr: '请输入密码' }, TEL_HAS_USED: { code: 10011, simStr: '该手机号已被使用' }, ACCOUNT_NOT_GUEST: { code: 10012, simStr: '该账号已绑定过' }, + AUTHEN_FAIL: { code: 10013, simStr: '实名失败' }, // 战斗相关状态 20000 - 29999 // 战斗通用 20000 - 20099 BATTLE_MISS_INFO: { code: 20001, simStr: '缺少关卡信息' }, diff --git a/shared/db/User.ts b/shared/db/User.ts index 7adcdf5fa..3d67543ec 100644 --- a/shared/db/User.ts +++ b/shared/db/User.ts @@ -169,7 +169,7 @@ export default class User extends BaseModel { } public static async findUserByToken(token: string, lean = true) { - const user: UserType = await UserModel.findOne({ token }).select('uid token serverType auth tel userCode').lean(lean); + const user: UserType = await UserModel.findOne({ token }).select('uid token serverType auth tel userCode pkgName').lean(lean); return user; } diff --git a/shared/pubUtils/httpUtil.ts b/shared/pubUtils/httpUtil.ts new file mode 100644 index 000000000..ca661180f --- /dev/null +++ b/shared/pubUtils/httpUtil.ts @@ -0,0 +1,82 @@ +import * as request from "request-promise"; +import * as crypto from 'crypto' +import { BANTU_VID_ADDR, BANTU_VID_APP_KEY } from '@consts'; + +/** + * 实名认证 + * @param name 真实姓名 + * @param idNum 身份证号 + * @param roleId 账号 + * @param packageName 包名 + */ +export async function authenticate (name: string, idNum: string, roleId: string, packageName: string) { + if(!packageName || packageName==''){ + packageName = 'com.bantu.nfsg' + } + + let result = await vidHttpRequest(BANTU_VID_ADDR.IDCARD, { + account: roleId, + cardno: idNum, + name, + appkey: BANTU_VID_APP_KEY, + package: packageName + }); + if(result && result.code !== 1) { + console.error(result.msg); + } + + return result && result.code == 1; +} + +export async function vidHttpRequest(addr: string, body: any) { + body['sign'] = getObjSign(body); + console.log('body: ', JSON.stringify(body)) + + let options = { + url: BANTU_VID_ADDR.HOST + addr, + method: 'POST', + body:body, + json: true + } + + try { + let res = await request(options); + let check = checkSign(res); + if(!check) return false; + console.log('*****request result*****'); + console.log(JSON.stringify(res)); + return res; + } catch(e) { + console.error(e); + return false + } +} + +export function md5Vid (str: string) { + str = 'vId' + str; + return crypto.createHash('md5').update(str, 'utf8').digest("hex"); +}; + +export function getObjSign (obj: any) { + const str = []; + Object.keys(obj).sort().forEach((key) => { + if (key == 'sign') { + + } else { + str.push(key + '=' + obj[key]); + } + }); + if (str.length == 0) { + console.error('check obj', obj); + } + var strs = str.join(''); + return md5Vid(strs); +} + +export async function checkSign (obj: any) { + if (getObjSign(obj) === obj.sign) { + return true; + } + console.warn('correct sign:', getObjSign(obj), obj.sign); + return false; +} diff --git a/web-server/app/middleware/tokenParser.ts b/web-server/app/middleware/tokenParser.ts index 054ffdb0c..dfb3904db 100644 --- a/web-server/app/middleware/tokenParser.ts +++ b/web-server/app/middleware/tokenParser.ts @@ -17,6 +17,8 @@ module.exports = () => { ctx.uid = user.uid; ctx.serverType = user.serverType; ctx.auth = user.auth; + ctx.userCode = user.userCode; + ctx.pkgName = user.pkgName; await next(); }; }; diff --git a/web-server/app/service/Auth.ts b/web-server/app/service/Auth.ts index 4fd3dbaae..01a34ac7d 100644 --- a/web-server/app/service/Auth.ts +++ b/web-server/app/service/Auth.ts @@ -13,6 +13,7 @@ import { getExpByLv, getHeroExpByLv, gameData } from 'app/pubUtils/data'; import { isString } from 'underscore'; import { getAge } from 'app/pubUtils/timeUtil'; import { shouldRefresh } from 'app/pubUtils/util'; +import { authenticate } from 'app/pubUtils/httpUtil'; /** * Test Service @@ -161,7 +162,7 @@ export default class Auth extends Service { let user = await UserModel.findUserByTel(tel); return this.ctx.service.utils.resResult(STATUS.SUCCESS, { - hasAccount: !!user + hasAccount: !!user && user.hasSetPw }); } @@ -367,6 +368,8 @@ export default class Auth extends Service { const ctx = this.ctx; // TODO 接SDK console.log(name, idNum); + let result = await authenticate(name, idNum, ctx.userCode, ctx.pkgName); + if(!result) return ctx.service.utils.resResult(STATUS.AUTHEN_FAIL); let birthday = this.getBirthdayByIdCard(idNum); let user = await UserModel.authentication(ctx.uid, birthday, ''); diff --git a/web-server/package-lock.json b/web-server/package-lock.json index 0f45c84ca..157038d46 100644 --- a/web-server/package-lock.json +++ b/web-server/package-lock.json @@ -269,6 +269,12 @@ } } }, + "@types/bluebird": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.33.tgz", + "integrity": "sha512-ndEo1xvnYeHxm7I/5sF6tBvnsA4Tdi3zj1keRKRs12SP+2ye2A27NDJ1B6PqkfMbGAcT+mqQVqbZRIrhfOp5PQ==", + "dev": true + }, "@types/body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", @@ -285,6 +291,12 @@ } } }, + "@types/caseless": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", + "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", + "dev": true + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -544,6 +556,28 @@ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, + "@types/request": { + "version": "2.48.5", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz", + "integrity": "sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ==", + "dev": true, + "requires": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" + } + }, + "@types/request-promise": { + "version": "4.1.47", + "resolved": "https://registry.npmjs.org/@types/request-promise/-/request-promise-4.1.47.tgz", + "integrity": "sha512-eRSZhAS8SMsrWOM8vbhxFGVZhTbWSJvaRKyufJTdIf4gscUouQvOBlfotPSPHbMR3S7kfkyKbhb1SWPmQdy3KQ==", + "dev": true, + "requires": { + "@types/bluebird": "*", + "@types/request": "*" + } + }, "@types/serve-static": { "version": "1.13.5", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", @@ -572,6 +606,12 @@ "@types/superagent": "*" } }, + "@types/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==", + "dev": true + }, "@types/yargs": { "version": "12.0.18", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.18.tgz", diff --git a/web-server/package.json b/web-server/package.json index 92edb6a53..5fe897f96 100644 --- a/web-server/package.json +++ b/web-server/package.json @@ -37,6 +37,7 @@ "devDependencies": { "@types/mocha": "^2.2.40", "@types/node": "^7.0.12", + "@types/request-promise": "^4.1.47", "@types/supertest": "^2.0.0", "autod": "^3.0.1", "autod-egg": "^1.1.0",