Umstellung auf firebase

This commit is contained in:
2025-02-20 17:51:54 -06:00
parent f6d1b8623c
commit 521e799bff
40 changed files with 495 additions and 261 deletions

View File

@@ -1,35 +1,62 @@
import { Body, Controller, Get, Param, Put, UseGuards } from '@nestjs/common';
import { JwtAuthGuard } from 'src/jwt-auth/jwt-auth.guard';
import { Body, Controller, Get, HttpException, HttpStatus, Param, Post, Put, UseGuards } from '@nestjs/common';
import { AuthGuard } from 'src/jwt-auth/auth.guard';
import admin from 'src/jwt-auth/firebase-admin';
import { KeycloakUser } from 'src/models/main.model';
import { AdminAuthGuard } from '../jwt-auth/admin-auth.guard';
import { AuthService } from './auth.service';
@Controller('auth')
export class AuthController {
constructor(private readonly authService: AuthService) {}
@UseGuards(AdminAuthGuard)
@Get()
async getAccessToken(): Promise<any> {
return await this.authService.getAccessToken();
}
// @UseGuards(AdminAuthGuard)
// @Get()
// async getAccessToken(): Promise<any> {
// return await this.authService.getAccessToken();
// }
@UseGuards(AdminAuthGuard)
@Get('user/all')
async getUsers(): Promise<any> {
return await this.authService.getUsers();
}
// @UseGuards(AdminAuthGuard)
// @Get('user/all')
// async getUsers(): Promise<any> {
// return await this.authService.getUsers();
// }
@UseGuards(JwtAuthGuard)
@UseGuards(AuthGuard)
@Get('users/:userid')
async getUser(@Param('userid') userId: string): Promise<any> {
return await this.authService.getUser(userId);
}
@UseGuards(JwtAuthGuard)
@UseGuards(AuthGuard)
@Put('users/:userid')
async updateKeycloakUser(@Body() keycloakUser: KeycloakUser): Promise<any> {
return await this.authService.updateKeycloakUser(keycloakUser);
}
@Post('verify-email')
async verifyEmail(@Body('oobCode') oobCode: string, @Body('email') email: string) {
if (!oobCode || !email) {
throw new HttpException('oobCode and email are required', HttpStatus.BAD_REQUEST);
}
try {
// Schritt 1: Hole den Benutzer anhand der E-Mail-Adresse
const userRecord = await admin.auth().getUserByEmail(email);
if (userRecord.emailVerified) {
return { message: 'Email is already verified' };
}
// Schritt 2: Aktualisiere den Benutzerstatus
// Hinweis: Wir können den oobCode nicht serverseitig validieren.
// Wir nehmen an, dass der oobCode korrekt ist, da er von Firebase generiert wurde.
await admin.auth().updateUser(userRecord.uid, {
emailVerified: true,
});
return { message: 'Email successfully verified' };
} catch (error) {
throw new HttpException(error.message || 'Failed to verify email', HttpStatus.BAD_REQUEST);
}
}
// @UseGuards(AdminAuthGuard)
// @Get('user/:userid/lastlogin') //e0811669-c7eb-4e5e-a699-e8334d5c5b01 -> aknuth
// getLastLogin(@Param('userid') userId: string): any {