Model Struktur

This commit is contained in:
Bastian Wagner
2024-09-11 10:11:24 +02:00
parent 5d72978d1e
commit 00c26e1fa1
23 changed files with 56 additions and 67 deletions

View File

@@ -1,6 +1,6 @@
import { Body, Controller, Get, Post } from '@nestjs/common'; import { Body, Controller, Get, Post } from '@nestjs/common';
import { User } from 'src/model';
import { LoginUserDto } from 'src/model/dto'; import { LoginUserDto } from 'src/model/dto';
import { User } from 'src/model/user.entity';
import { UsersService } from 'src/users/users.service'; import { UsersService } from 'src/users/users.service';
@Controller('app') @Controller('app')

View File

@@ -10,11 +10,9 @@ import {
} from '@nestjs/common'; } from '@nestjs/common';
import { UserService } from './user.service'; import { UserService } from './user.service';
import { AuthGuard, Roles, RolesGuard } from 'src/core/secure/guards'; import { AuthGuard, Roles, RolesGuard } from 'src/core/secure/guards';
import { Client } from 'src/model/client.entity'; import { AuthenticatedRequest, Client, RedirectUri } from 'src/model';
import { AuthenticatedRequest } from 'src/model';
import { CreateClientDto } from 'src/model/dto/create-client.dto'; import { CreateClientDto } from 'src/model/dto/create-client.dto';
import { ClientService } from 'src/client/client.service'; import { ClientService } from 'src/client/client.service';
import { RedirectUri } from 'src/model/redirect-uri.entity';
@UseGuards(AuthGuard, RolesGuard) @UseGuards(AuthGuard, RolesGuard)
@Controller('app/user') @Controller('app/user')

View File

@@ -1,7 +1,5 @@
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { Client, ClientRepository } from 'src/model/client.entity'; import { ClientRepository, LogRepository, User, Client } from 'src/model';
import { LogRepository } from 'src/model/log.entity';
import { User } from 'src/model/user.entity';
@Injectable() @Injectable()
export class UserService { export class UserService {

View File

@@ -2,10 +2,10 @@ import { Body, Controller, Get, Post, Query } from '@nestjs/common';
import { UsersService } from 'src/users/users.service'; import { UsersService } from 'src/users/users.service';
import { ClientService } from 'src/client/client.service'; import { ClientService } from 'src/client/client.service';
import { FormDataRequest } from 'nestjs-form-data'; import { FormDataRequest } from 'nestjs-form-data';
import { Client } from 'src/model/client.entity';
import { CustomLogger } from 'src/core/custom.logger'; import { CustomLogger } from 'src/core/custom.logger';
import { CreateUserDto } from 'src/model/dto/create-user.dto'; import { CreateUserDto } from 'src/model/dto/create-user.dto';
import { RequestResetPwDto, ResetPWDto } from 'src/model/dto'; import { RequestResetPwDto, ResetPWDto } from 'src/model/dto';
import { Client } from 'src/model';
@Controller('auth') @Controller('auth')
export class AuthController { export class AuthController {

View File

@@ -4,31 +4,13 @@ import { UsersService } from 'src/users/users.service';
import { ClientService } from 'src/client/client.service'; import { ClientService } from 'src/client/client.service';
import { JwtModule } from '@nestjs/jwt'; import { JwtModule } from '@nestjs/jwt';
import { NestjsFormDataModule } from 'nestjs-form-data'; import { NestjsFormDataModule } from 'nestjs-form-data';
import { User, UserRepository } from 'src/model/user.entity';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Client, ClientRepository } from 'src/model/client.entity';
import { RedirectUri } from 'src/model/redirect-uri.entity';
import {
AuthorizationCode,
AuthorizationCodeRepository,
} from 'src/model/auth-code.entity';
import { LoggerModule } from 'src/core/logger.module'; import { LoggerModule } from 'src/core/logger.module';
import { SessionKey, SessionKeyRepository } from 'src/model/session-key.entity';
import { ConfigModule, ConfigService } from '@nestjs/config'; import { ConfigModule, ConfigService } from '@nestjs/config';
import { Role, RoleRepository } from 'src/model/role.entity';
import { DatabaseModule } from 'src/core/database/database.module'; import { DatabaseModule } from 'src/core/database/database.module';
import { MailModule } from 'src/application/mail/mail.module'; import { MailModule } from 'src/application/mail/mail.module';
@Module({ @Module({
providers: [ providers: [UsersService, ClientService],
UsersService,
ClientService,
UserRepository,
ClientRepository,
AuthorizationCodeRepository,
SessionKeyRepository,
RoleRepository,
],
controllers: [AuthController], controllers: [AuthController],
imports: [ imports: [
JwtModule.registerAsync({ JwtModule.registerAsync({
@@ -40,14 +22,6 @@ import { MailModule } from 'src/application/mail/mail.module';
}), }),
}), }),
NestjsFormDataModule, NestjsFormDataModule,
TypeOrmModule.forFeature([
User,
Client,
RedirectUri,
AuthorizationCode,
SessionKey,
Role,
]),
LoggerModule, LoggerModule,
DatabaseModule, DatabaseModule,
MailModule, MailModule,

View File

@@ -1,8 +1,12 @@
import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
import {
ClientRepository,
RedirectRepository,
User,
Client,
RedirectUri,
} from 'src/model';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import { Client, ClientRepository } from 'src/model/client.entity';
import { RedirectRepository, RedirectUri } from 'src/model/redirect-uri.entity';
import { User } from 'src/model/user.entity';
@Injectable() @Injectable()
export class ClientService { export class ClientService {

View File

@@ -1,7 +1,7 @@
import { LoggerService, Injectable, Logger } from '@nestjs/common'; import { LoggerService, Injectable, Logger } from '@nestjs/common';
import { ConfigService } from '@nestjs/config'; import { ConfigService } from '@nestjs/config';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { Log, LOGMESSAGETYPE } from 'src/model/log.entity'; import { Log, LOGMESSAGETYPE } from 'src/model';
import { Repository } from 'typeorm'; import { Repository } from 'typeorm';
@Injectable() @Injectable()

View File

@@ -1,18 +1,27 @@
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm'; import { TypeOrmModule } from '@nestjs/typeorm';
import { import {
User,
Client,
RedirectUri,
SessionKey,
Log,
ResetPwCode,
UserRepository,
ClientRepository,
SessionKeyRepository,
RedirectRepository,
LogRepository,
ResetPwCodeRepository,
AuthorizationCode, AuthorizationCode,
AuthorizationCodeRepository, AuthorizationCodeRepository,
} from 'src/model/auth-code.entity'; Role,
import { Client, ClientRepository } from 'src/model/client.entity'; RoleRepository,
import { Log, LogRepository } from 'src/model/log.entity'; } from 'src/model';
import { RedirectRepository, RedirectUri } from 'src/model/redirect-uri.entity';
import { ResetPwCode, ResetPwCodeRepository } from 'src/model/reset-pw.entity';
import { SessionKey, SessionKeyRepository } from 'src/model/session-key.entity';
import { User, UserRepository } from 'src/model/user.entity';
const ENTITIES = [ const ENTITIES = [
User, User,
Role,
Client, Client,
RedirectUri, RedirectUri,
AuthorizationCode, AuthorizationCode,
@@ -28,12 +37,13 @@ const REPOSITORIES = [
RedirectRepository, RedirectRepository,
LogRepository, LogRepository,
ResetPwCodeRepository, ResetPwCodeRepository,
RoleRepository,
]; ];
@Module({ @Module({
imports: [TypeOrmModule.forFeature(ENTITIES)], imports: [TypeOrmModule.forFeature(ENTITIES)],
controllers: [], controllers: [],
providers: [...REPOSITORIES], providers: [...REPOSITORIES],
exports: [...REPOSITORIES], exports: [...REPOSITORIES, TypeOrmModule],
}) })
export class DatabaseModule {} export class DatabaseModule {}

View File

@@ -1,13 +1,11 @@
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
import { Log } from 'src/model/log.entity';
import { CustomLogger } from './custom.logger'; import { CustomLogger } from './custom.logger';
import { TypeOrmModule } from '@nestjs/typeorm';
import { DatabaseModule } from './database/database.module'; import { DatabaseModule } from './database/database.module';
@Module({ @Module({
providers: [CustomLogger], providers: [CustomLogger],
controllers: [], controllers: [],
imports: [TypeOrmModule.forFeature([Log]), DatabaseModule], imports: [DatabaseModule],
exports: [CustomLogger], exports: [CustomLogger],
}) })
export class LoggerModule {} export class LoggerModule {}

View File

@@ -1,3 +1,3 @@
import { SetMetadata } from '@nestjs/common'; import { SetMetadata } from '@nestjs/common';
export const Roles = (...roles: string[]) => SetMetadata('roles', roles); export const Roles = (...roles: string[]) => SetMetadata('roles', roles);

View File

@@ -1,6 +1,6 @@
import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { Reflector } from '@nestjs/core'; import { Reflector } from '@nestjs/core';
import { User } from 'src/model/user.entity'; import { User } from 'src/model';
@Injectable() @Injectable()
export class RolesGuard implements CanActivate { export class RolesGuard implements CanActivate {

View File

@@ -5,9 +5,8 @@ import {
PrimaryColumn, PrimaryColumn,
Repository, Repository,
} from 'typeorm'; } from 'typeorm';
import { Client } from './client.entity';
import { User } from './user.entity';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { Client, User } from './';
@Entity() @Entity()
export class AuthorizationCode { export class AuthorizationCode {

View File

@@ -11,9 +11,7 @@ import {
JoinTable, JoinTable,
CreateDateColumn, CreateDateColumn,
} from 'typeorm'; } from 'typeorm';
import { RedirectUri } from './redirect-uri.entity'; import { AuthorizationCode, RedirectUri, User } from '.';
import { AuthorizationCode } from './auth-code.entity';
import { User } from './user.entity';
@Entity() @Entity()
export class Client { export class Client {

View File

@@ -0,0 +1,8 @@
export * from './client.entity';
export * from './log.entity';
export * from './redirect-uri.entity';
export * from './reset-pw.entity';
export * from './role.entity';
export * from './session-key.entity';
export * from './user.entity';
export * from './auth-code.entity';

View File

@@ -1 +1,2 @@
export * from './interface'; export * from './interface';
export * from './entity';

View File

@@ -1,4 +1,4 @@
import { User } from '../user.entity'; import { User } from '../entity';
export interface AuthenticatedRequest extends Request { export interface AuthenticatedRequest extends Request {
user: User; user: User;

View File

@@ -1,20 +1,21 @@
import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
import { User, UserRepository } from 'src/model/user.entity';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
import * as bcrypt from 'bcrypt'; import * as bcrypt from 'bcrypt';
import { ClientService } from 'src/client/client.service'; import { ClientService } from 'src/client/client.service';
import {
AuthorizationCode,
AuthorizationCodeRepository,
} from 'src/model/auth-code.entity';
import { JwtService } from '@nestjs/jwt'; import { JwtService } from '@nestjs/jwt';
import { CustomLogger } from 'src/core/custom.logger'; import { CustomLogger } from 'src/core/custom.logger';
import { CreateUserDto } from 'src/model/dto/create-user.dto'; import { CreateUserDto } from 'src/model/dto/create-user.dto';
import { SessionKeyRepository } from 'src/model/session-key.entity';
import { Client } from 'src/model/client.entity';
import { LoginUserDto, RequestResetPwDto, ResetPWDto } from 'src/model/dto'; import { LoginUserDto, RequestResetPwDto, ResetPWDto } from 'src/model/dto';
import { ResetPwCodeRepository } from 'src/model/reset-pw.entity';
import { MailService } from 'src/application/mail/mail.service'; import { MailService } from 'src/application/mail/mail.service';
import {
UserRepository,
SessionKeyRepository,
ResetPwCodeRepository,
User,
Client,
AuthorizationCodeRepository,
AuthorizationCode,
} from 'src/model';
@Injectable() @Injectable()
export class UsersService { export class UsersService {
@@ -301,7 +302,7 @@ export class UsersService {
savedCode.user.password = hashedPassword; savedCode.user.password = hashedPassword;
await this.userRepo.save(savedCode.user); await this.userRepo.save(savedCode.user);
await this.resetPwRepo.remove(savedCode); await this.resetPwRepo.remove(savedCode);
await this.sessionRepo.delete({ user: { id: savedCode.user.id }}); await this.sessionRepo.delete({ user: { id: savedCode.user.id } });
return { success: true }; return { success: true };
} }
} }