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); }