register or update users based on the vatsim ID
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user