diff --git a/package.json b/package.json index 59bc1a6..7228b16 100644 --- a/package.json +++ b/package.json @@ -23,12 +23,17 @@ "@nestjs/common": "^6.0.0", "@nestjs/core": "^6.0.0", "@nestjs/jwt": "^6.1.1", + "@nestjs/passport": "^6.1.0", "@nestjs/platform-express": "^6.0.0", "@nestjs/typeorm": "^6.1.2", "@types/bcrypt": "^3.0.0", + "@types/passport": "^1.0.0", + "@types/passport-jwt": "^3.0.1", "bcrypt": "^3.0.6", "class-transformer": "^0.2.3", "mysql": "^2.17.1", + "passport": "^0.4.0", + "passport-jwt": "^4.0.0", "reflect-metadata": "^0.1.12", "rimraf": "^2.6.2", "rxjs": "^6.3.3", diff --git a/src/app.module.ts b/src/app.module.ts index c498c21..8b2252b 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -16,6 +16,7 @@ import { AuthModule } from './modules/auth/auth.module'; password: 'jeremy', database: 'nest', synchronize: true, + logging: true, entities: [__dirname + '/**/*.entity{.ts,.js}'], }), PostModule, diff --git a/src/modules/auth/auth.module.ts b/src/modules/auth/auth.module.ts index e7f077a..389ad35 100644 --- a/src/modules/auth/auth.module.ts +++ b/src/modules/auth/auth.module.ts @@ -3,18 +3,23 @@ import { AuthController } from './auth.controller'; import { AuthService } from './auth.service'; import { UserModule } from '../user/user.module'; import { JwtModule } from '@nestjs/jwt'; +import { PassportModule } from '@nestjs/passport'; +import { JwtStrategy } from './strategies/jwt.strategy'; @Module({ imports: [ UserModule, JwtModule.register({ - secretOrPrivateKey: 'nDSAR3+K4pLD+HIl9xWFY/n7maMxLwPTj5gscZvd9Vo=', + secret: 'nDSAR3+K4pLD+HIl9xWFY/n7maMxLwPTj5gscZvd9Vo=', signOptions: { expiresIn: '12h', } - }) + }), + PassportModule.register({ + defaultStrategy: 'jwt', + }), ], controllers: [AuthController], - providers: [AuthService] + providers: [AuthService, JwtStrategy] }) export class AuthModule {} diff --git a/src/modules/auth/auth.service.ts b/src/modules/auth/auth.service.ts index d477a9c..142ebf6 100644 --- a/src/modules/auth/auth.service.ts +++ b/src/modules/auth/auth.service.ts @@ -31,7 +31,7 @@ export class AuthService { const token = this.signToken(payload) return { - ...payload + ...payload, token } } diff --git a/yarn.lock b/yarn.lock index 832468e..8f28ef5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -47,6 +47,11 @@ "@types/jsonwebtoken" "7.2.8" jsonwebtoken "8.4.0" +"@nestjs/passport@^6.1.0": + version "6.1.0" + resolved "https://registry.npm.taobao.org/@nestjs/passport/download/@nestjs/passport-6.1.0.tgz#80da326cc976a82530648d8025b04c8e2d41c10e" + integrity sha1-gNoybMl2qCUwZI2AJbBMji1BwQ4= + "@nestjs/platform-express@^6.0.0": version "6.3.1" resolved "https://registry.npm.taobao.org/@nestjs/platform-express/download/@nestjs/platform-express-6.3.1.tgz#8adb602a5bb9571b9d58646bd52141a26ea8ba3e" @@ -113,7 +118,7 @@ "@types/node" "*" "@types/range-parser" "*" -"@types/express@^4.16.0": +"@types/express@*", "@types/express@^4.16.0": version "4.17.0" resolved "https://registry.npm.taobao.org/@types/express/download/@types/express-4.17.0.tgz#49eaedb209582a86f12ed9b725160f12d04ef287" integrity sha1-SertsglYKobxLtm3JRYPEtBO8oc= @@ -132,6 +137,13 @@ resolved "https://registry.npm.taobao.org/@types/json5/download/@types/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/jsonwebtoken@*": + version "8.3.2" + resolved "https://registry.npm.taobao.org/@types/jsonwebtoken/download/@types/jsonwebtoken-8.3.2.tgz#e3d5245197152346fae7ee87d5541aa5a92d0362" + integrity sha1-49UkUZcVI0b65+6H1VQapaktA2I= + dependencies: + "@types/node" "*" + "@types/jsonwebtoken@7.2.8": version "7.2.8" resolved "https://registry.npm.taobao.org/@types/jsonwebtoken/download/@types/jsonwebtoken-7.2.8.tgz#8d199dab4ddb5bba3234f8311b804d2027af2b3a" @@ -154,6 +166,30 @@ resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-10.14.9.tgz#2e8d678039d27943ce53a1913386133227fd9066" integrity sha1-Lo1ngDnSeUPOU6GRM4YTMif9kGY= +"@types/passport-jwt@^3.0.1": + version "3.0.1" + resolved "https://registry.npm.taobao.org/@types/passport-jwt/download/@types/passport-jwt-3.0.1.tgz#bc4c2610815565de977ea1a580c047d71c646084" + integrity sha1-vEwmEIFVZd6XfqGlgMBH1xxkYIQ= + dependencies: + "@types/express" "*" + "@types/jsonwebtoken" "*" + "@types/passport-strategy" "*" + +"@types/passport-strategy@*": + version "0.2.35" + resolved "https://registry.npm.taobao.org/@types/passport-strategy/download/@types/passport-strategy-0.2.35.tgz#e52f5212279ea73f02d9b06af67efe9cefce2d0c" + integrity sha1-5S9SEieepz8C2bBq9n7+nO/OLQw= + dependencies: + "@types/express" "*" + "@types/passport" "*" + +"@types/passport@*", "@types/passport@^1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@types/passport/download/@types/passport-1.0.0.tgz#747fa127a747a145ff279f3df3e07c425e5ff297" + integrity sha1-dH+hJ6dHoUX/J5898+B8Ql5f8pc= + dependencies: + "@types/express" "*" + "@types/range-parser@*": version "1.2.3" resolved "https://registry.npm.taobao.org/@types/range-parser/download/@types/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" @@ -3024,6 +3060,22 @@ jsonwebtoken@8.4.0: lodash.once "^4.0.0" ms "^2.1.1" +jsonwebtoken@^8.2.0: + version "8.5.1" + resolved "https://registry.npm.taobao.org/jsonwebtoken/download/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" + integrity sha1-AOceC431TCEhofJhN98igGc7zA0= + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^5.6.0" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -3043,7 +3095,7 @@ jwa@^1.4.1: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jws@^3.1.5: +jws@^3.1.5, jws@^3.2.2: version "3.2.2" resolved "https://registry.npm.taobao.org/jws/download/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" integrity sha1-ABCZ82OUaMlBQADpmZX6UvtHgwQ= @@ -3916,6 +3968,27 @@ pascalcase@^0.1.1: resolved "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +passport-jwt@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/passport-jwt/download/passport-jwt-4.0.0.tgz#7f0be7ba942e28b9f5d22c2ebbb8ce96ef7cf065" + integrity sha1-fwvnupQuKLn10iwuu7jOlu988GU= + dependencies: + jsonwebtoken "^8.2.0" + passport-strategy "^1.0.0" + +passport-strategy@1.x.x, passport-strategy@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/passport-strategy/download/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" + integrity sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ= + +passport@^0.4.0: + version "0.4.0" + resolved "https://registry.npm.taobao.org/passport/download/passport-0.4.0.tgz#c5095691347bd5ad3b5e180238c3914d16f05811" + integrity sha1-xQlWkTR71a07XhgCOMORTRbwWBE= + dependencies: + passport-strategy "1.x.x" + pause "0.0.1" + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -3967,6 +4040,11 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +pause@0.0.1: + version "0.0.1" + resolved "https://registry.npm.taobao.org/pause/download/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" + integrity sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10= + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -4429,7 +4507,7 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5, semver@^5.5.0, semver@^5.6.0: version "5.7.0" resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.0.tgz?cache=0&sync_timestamp=1559063729249&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" integrity sha1-eQp89v6lRZuslhELKbYEEtyP+Ws=