register or update users based on the vatsim ID

This commit is contained in:
Sven Czarnian
2022-11-03 01:39:45 +01:00
parent 58b98456ac
commit ed984db111

View File

@@ -19,7 +19,7 @@ export class AuthService {
) {} ) {}
async login(code: string): Promise<string> { async login(code: string): Promise<string> {
const token = await lastValueFrom( const [token, refreshToken] = await lastValueFrom(
this.httpService this.httpService
.post( .post(
`${this.config.get<string>( `${this.config.get<string>(
@@ -34,7 +34,10 @@ export class AuthService {
}, },
) )
.pipe( .pipe(
map((response) => response.data.access_token), map((response) => [
response.data.access_token,
response.data.refresh_token,
]),
catchError((err) => { catchError((err) => {
throw new HttpException(err.response.data, err.response.status); throw new HttpException(err.response.data, err.response.status);
}), }),
@@ -63,6 +66,31 @@ export class AuthService {
); );
if (userdata.oauth.token_valid) { 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 }; const payload = { username: userdata.cid, sub: token };
return this.jwtService.sign(payload); return this.jwtService.sign(payload);
} }