Browse Source

register or update users based on the vatsim ID

Sven Czarnian 2 years ago
parent
commit
ed984db111
1 changed files with 30 additions and 2 deletions
  1. 30 2
      src/auth/auth.service.ts

+ 30 - 2
src/auth/auth.service.ts

@@ -19,7 +19,7 @@ export class AuthService {
   ) {}
 
   async login(code: string): Promise<string> {
-    const token = await lastValueFrom(
+    const [token, refreshToken] = await lastValueFrom(
       this.httpService
         .post(
           `${this.config.get<string>(
@@ -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);
     }