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