From ed984db11109a0443ee0f57a322776d28b8cd32e Mon Sep 17 00:00:00 2001 From: Sven Czarnian Date: Thu, 3 Nov 2022 01:39:45 +0100 Subject: [PATCH] register or update users based on the vatsim ID --- src/auth/auth.service.ts | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts index 46a80ca..09c2c77 100644 --- a/src/auth/auth.service.ts +++ b/src/auth/auth.service.ts @@ -19,7 +19,7 @@ export class AuthService { ) {} async login(code: string): Promise { - const token = await lastValueFrom( + const [token, refreshToken] = await lastValueFrom( this.httpService .post( `${this.config.get( @@ -34,7 +34,10 @@ export class AuthService { }, ) .pipe( - map((response) => response.data.access_token), + map((response) => [ + response.data.access_token, + response.data.refresh_token, + ]), catchError((err) => { throw new HttpException(err.response.data, err.response.status); }), @@ -63,6 +66,31 @@ export class AuthService { ); if (userdata.oauth.token_valid) { + let fullName = 'Private'; + if (userdata.personal !== undefined) { + fullName = userdata.personal.name_full; + } + + this.userModel.findOne({ vatsimId: userdata.cid }).then((user) => { + if (!user) { + this.userModel.create({ + vatsimId: userdata.cid, + fullName, + vatsimToken: token, + vatsimRefreshToken: refreshToken, + }); + } else { + this.userModel.findOneAndUpdate( + { vatsimId: userdata.cid }, + { + fullName, + vatsimToken: token, + vatsimRefreshToken: refreshToken, + }, + ); + } + }); + const payload = { username: userdata.cid, sub: token }; return this.jwtService.sign(payload); }