Add ability to get fresh jwt

This commit is contained in:
rubikscraft
2022-02-28 10:29:40 +01:00
parent 3ac8e31b7f
commit fb985df2e0
15 changed files with 54 additions and 59 deletions

View File

@@ -1,4 +1,4 @@
import { Module } from '@nestjs/common';
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from './routes/api/auth/auth.module';
import { ImageModule } from './routes/image/imageroute.module';
@@ -29,4 +29,5 @@ import { EImage } from 'picsur-shared/dist/entities/image.entity';
DemoManagerModule,
],
})
export class AppModule {}
export class AppModule {
}

View File

@@ -23,7 +23,7 @@ async function bootstrap() {
);
app.useGlobalFilters(new MainExceptionFilter());
app.useGlobalInterceptors(new SuccessInterceptor());
app.useGlobalPipes(new ValidationPipe({ disableErrorMessages: true }));
app.useGlobalPipes(new ValidationPipe({ disableErrorMessages: true, forbidUnknownValues: true }));
await app.listen(Config.main.port, Config.main.host);
}

View File

@@ -15,7 +15,12 @@ import { JwtAuthGuard } from './jwt.guard';
import { AdminGuard } from './admin.guard';
import { HasFailed } from 'picsur-shared/dist/types';
import AuthFasityRequest from './authrequest';
import { AuthDeleteRequest, AuthLoginResponse, AuthRegisterRequest } from 'picsur-shared/dist/dto/auth.dto';
import {
AuthDeleteRequest,
AuthLoginResponse,
AuthMeResponse,
AuthRegisterRequest,
} from 'picsur-shared/dist/dto/auth.dto';
@Controller('api/auth')
export class AuthController {
@@ -77,6 +82,10 @@ export class AuthController {
@UseGuards(JwtAuthGuard)
@Get('me')
async me(@Request() req: AuthFasityRequest) {
return req.user;
const meResponse: AuthMeResponse = new AuthMeResponse();
meResponse.user = req.user;
meResponse.newJwtToken = await this.authService.createToken(req.user);
return meResponse;
}
}

View File

@@ -1,4 +1,10 @@
import { Logger, Module, OnModuleInit } from '@nestjs/common';
import {
Logger,
MiddlewareConsumer,
Module,
NestModule,
OnModuleInit,
} from '@nestjs/common';
import { PassportModule } from '@nestjs/passport';
import { AuthService } from './auth.service';
import { LocalStrategy } from './local.strategy';
@@ -27,7 +33,6 @@ export class AuthModule implements OnModuleInit {
onModuleInit() {
this.checkJwtSecret();
this.ensureAdminExists();
}

View File

@@ -1,7 +1,7 @@
import { Injectable, Logger } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt';
import * as bcrypt from 'bcrypt';
import { plainToClass } from 'class-transformer';
import { instanceToPlain, plainToClass } from 'class-transformer';
import { validate } from 'class-validator';
import { JwtDataDto } from 'picsur-shared/dist/dto/auth.dto';
import { EUser } from 'picsur-shared/dist/entities/user.entity';
@@ -51,7 +51,7 @@ export class AuthService {
throw new Error('Invalid jwt token generated');
}
return this.jwtService.signAsync(jwtData);
return this.jwtService.signAsync(instanceToPlain(jwtData));
}
async makeAdmin(user: string | EUser): AsyncFailable<true> {