register or update users based on the vatsim ID

This commit is contained in:
Sven Czarnian
2022-11-03 01:39:45 +01:00
джерело 58b98456ac
коміт ed984db111

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