introduce the RADAR scope token

This commit is contained in:
Sven Czarnian
2022-11-04 21:33:24 +01:00
vanhempi 17f521008c
commit 912a8e7509
4 muutettua tiedostoa jossa 34 lisäystä ja 0 poistoa

Näytä tiedosto

@@ -3,6 +3,7 @@ import {
Get,
HttpException,
HttpStatus,
Patch,
Query,
Redirect,
Req,
@@ -68,9 +69,17 @@ export class AuthController {
return {
vatsimId: user.vatsimId,
fullName: user.fullName,
radarScopeKey: user.radarScopeKey,
administrator: user.administrator,
airportConfigurationAccess: user.airportConfigurationAccess,
};
});
}
@UseGuards(JwtGuard)
@Patch('/refreshRadarScopeKey')
async refreshRadarScopeKey(@Req() request: Request): Promise<void> {
const token = request.headers.authorization.replace('Bearer ', '');
return this.authService.resetRadarScopeKey(token);
}
}

Näytä tiedosto

@@ -4,6 +4,7 @@ import { ConfigService } from '@nestjs/config';
import { JwtService } from '@nestjs/jwt';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { v4 as uuid } from 'uuid';
import { catchError, lastValueFrom, map } from 'rxjs';
import { User, UserDocument } from './models/user.model';
@@ -76,6 +77,7 @@ export class AuthService {
this.userModel.create({
vatsimId: userdata.cid,
fullName,
radarScopeKey: uuid(),
vatsimToken: token,
vatsimRefreshToken: refreshToken,
});
@@ -110,4 +112,15 @@ export class AuthService {
return user;
});
}
async resetRadarScopeKey(token: string): Promise<void> {
const payload = this.jwtService.verify(token, {
secret: this.config.get<string>('server.jwt-secret'),
});
await this.userModel.findOneAndUpdate(
{ vatsimId: payload.vatsimId },
{ radarScopeKey: uuid() },
);
}
}

Näytä tiedosto

@@ -16,6 +16,13 @@ export class UserDto {
})
fullName: string;
@IsNotEmpty()
@ApiProperty({
description: 'The unique logon code for the radar scope plugins',
example: 'SECRET',
})
radarScopeKey: string;
@IsNotEmpty()
@ApiProperty({
description: 'Indicates if the user has administrator access',

Näytä tiedosto

@@ -17,6 +17,11 @@ export class User {
})
fullName: string;
@Prop({
type: String,
})
radarScopeKey: string;
@Prop({
required: true,
type: String,