Completed backend of profile page

This commit is contained in:
Mutzi 2022-08-25 17:53:12 +02:00
parent 10cd782a52
commit e1c7ef7a94

View File

@ -15,7 +15,7 @@ import {
import { AuthService } from '../services/auth';
import { AuthGuard } from '@nestjs/passport';
import { Public } from '../authguards';
import { Responses, Requests } from 'dto';
import { Requests, Responses } from 'dto';
import { tfaTypes } from '../entities';
import { toDataURL } from 'qrcode';
import * as base32 from 'thirty-two';
@ -48,12 +48,22 @@ export default class AuthController {
);
}
async tfa(
req,
code: string,
type: tfaTypes
@Post('2fa/disable')
async tfaDisable(
@Request() req
): Promise<Responses.Auth.RemoveTfaResponse> {
await this.authService.setTfaType(req.user, tfaTypes.NONE);
await this.authService.revokeAll(req.user);
return new Responses.Auth.RemoveTfaResponse();
}
@Post('2fa/complete')
async tfaMail(
@Request() req,
@Body(new ValidationPipe()) data: Requests.Auth.TfaComplete
): Promise<Responses.Auth.TfaCompletedResponse> {
if (!(await this.authService.verifyTfa(req.user, code, type))) {
const type = data.mail ? tfaTypes.EMAIL : tfaTypes.TOTP;
if (!(await this.authService.verifyTfa(req.user, data.code, type))) {
throw new UnauthorizedException('Incorrect 2fa');
}
await this.authService.setTfaType(req.user, type);
@ -61,23 +71,7 @@ export default class AuthController {
return new Responses.Auth.TfaCompletedResponse();
}
@Post('2fa/complete/mail')
async tfaMail(
@Request() req,
@Body(new ValidationPipe()) data: Requests.Auth.TfaComplete
): Promise<Responses.Auth.TfaCompletedResponse> {
return await this.tfa(req, data.code, tfaTypes.EMAIL);
}
@Post('2fa/complete/totp')
async tfaTotp(
@Request() req,
@Body(new ValidationPipe()) data: Requests.Auth.TfaComplete
): Promise<Responses.Auth.TfaCompletedResponse> {
return await this.tfa(req, data.code, tfaTypes.TOTP);
}
@Get('2fa/setup')
@Post('2fa/setup')
async setupTotp(
@Request() req,
@Body(new ValidationPipe()) data: Requests.Auth.TfaSetup
@ -93,7 +87,7 @@ export default class AuthController {
.encode(secret)
.toString()}&issuer=MFileserver`
),
secret
base32.encode(secret).toString()
);
}
@ -147,4 +141,10 @@ export default class AuthController {
);
return new Responses.Auth.ChangePasswordResponse();
}
@Post('logout_all')
async logoutAll(@Request() req): Promise<Responses.Auth.LogoutAllResponse> {
await this.authService.revokeAll(req.user);
return new Responses.Auth.LogoutAllResponse();
}
}