verifizierung

This commit is contained in:
Bastian Wagner
2026-06-09 14:01:38 +02:00
parent 8f3806d398
commit 4c9ecb0b6b
33 changed files with 3993 additions and 132 deletions

View File

@@ -14,6 +14,7 @@ import type { AuthenticatedRequest } from './auth.types';
import { AuthService } from './auth.service';
import { LoginDto } from './dto/login.dto';
import { RefreshTokenDto } from './dto/refresh-token.dto';
import { ResendVerificationDto } from './dto/resend-verification.dto';
import { RegisterDto } from './dto/register.dto';
import { JwtAuthGuard } from './jwt-auth.guard';
@@ -31,6 +32,12 @@ export class AuthController {
return this.authService.verifyEmail(token);
}
@Post('resend-verification')
@HttpCode(HttpStatus.OK)
resendVerification(@Body() resendVerificationDto: ResendVerificationDto) {
return this.authService.resendVerificationEmail(resendVerificationDto);
}
@Post('login')
@HttpCode(HttpStatus.OK)
login(@Body() loginDto: LoginDto) {

View File

@@ -12,6 +12,7 @@ import { Repository } from 'typeorm';
import { LoginDto } from './dto/login.dto';
import { RegisterDto } from './dto/register.dto';
import { RefreshTokenDto } from './dto/refresh-token.dto';
import { ResendVerificationDto } from './dto/resend-verification.dto';
import {
AuthTokenResponse,
AuthTokens,
@@ -106,6 +107,29 @@ export class AuthService {
}
}
async resendVerificationEmail(
resendVerificationDto: ResendVerificationDto,
): Promise<{ message: string }> {
const email = this.normalizeEmail(resendVerificationDto.email);
const message =
'Falls ein unverifiziertes Konto mit dieser E-Mail existiert, wurde eine neue Verifizierungsmail versendet.';
const user = await this.usersRepository.findOne({ where: { email } });
if (!user || user.verified) {
return { message };
}
user.verificationToken = this.createToken();
const savedUser = await this.usersRepository.save(user);
this.eventEmitter.emit(AppEvents.UserRegistered, {
email: savedUser.email,
verificationUrl: this.createVerificationUrl(savedUser.verificationToken!),
});
return { message };
}
async login(loginDto: LoginDto): Promise<AuthTokenResponse> {
const email = this.normalizeEmail(loginDto.email);
const password = this.requirePassword(loginDto.password);

View File

@@ -0,0 +1,3 @@
export class ResendVerificationDto {
email?: string;
}