From 00c26e1fa1ea64842b2fb11e591d601658fcbda4 Mon Sep 17 00:00:00 2001 From: Bastian Wagner Date: Wed, 11 Sep 2024 10:11:24 +0200 Subject: [PATCH] Model Struktur --- idp/src/application/application.controller.ts | 2 +- idp/src/application/user/user.controller.ts | 4 +-- idp/src/application/user/user.service.ts | 4 +-- idp/src/auth/auth.controller.ts | 2 +- idp/src/auth/auth.module.ts | 28 +------------------ idp/src/client/client.service.ts | 10 +++++-- idp/src/core/custom.logger.ts | 2 +- idp/src/core/database/database.module.ts | 26 +++++++++++------ idp/src/core/logger.module.ts | 4 +-- idp/src/core/secure/guards/role.decorator.ts | 2 +- idp/src/core/secure/guards/roles.guard.ts | 2 +- .../model/{ => entity}/auth-code.entity.ts | 3 +- idp/src/model/{ => entity}/client.entity.ts | 4 +-- idp/src/model/entity/index.ts | 8 ++++++ idp/src/model/{ => entity}/log.entity.ts | 0 .../model/{ => entity}/redirect-uri.entity.ts | 0 idp/src/model/{ => entity}/reset-pw.entity.ts | 0 idp/src/model/{ => entity}/role.entity.ts | 0 .../model/{ => entity}/session-key.entity.ts | 0 idp/src/model/{ => entity}/user.entity.ts | 0 idp/src/model/index.ts | 1 + .../model/interface/authenticated.request.ts | 2 +- idp/src/users/users.service.ts | 19 +++++++------ 23 files changed, 56 insertions(+), 67 deletions(-) rename idp/src/model/{ => entity}/auth-code.entity.ts (90%) rename idp/src/model/{ => entity}/client.entity.ts (88%) create mode 100644 idp/src/model/entity/index.ts rename idp/src/model/{ => entity}/log.entity.ts (100%) rename idp/src/model/{ => entity}/redirect-uri.entity.ts (100%) rename idp/src/model/{ => entity}/reset-pw.entity.ts (100%) rename idp/src/model/{ => entity}/role.entity.ts (100%) rename idp/src/model/{ => entity}/session-key.entity.ts (100%) rename idp/src/model/{ => entity}/user.entity.ts (100%) diff --git a/idp/src/application/application.controller.ts b/idp/src/application/application.controller.ts index 8580015..0fa77ce 100644 --- a/idp/src/application/application.controller.ts +++ b/idp/src/application/application.controller.ts @@ -1,6 +1,6 @@ import { Body, Controller, Get, Post } from '@nestjs/common'; +import { User } from 'src/model'; import { LoginUserDto } from 'src/model/dto'; -import { User } from 'src/model/user.entity'; import { UsersService } from 'src/users/users.service'; @Controller('app') diff --git a/idp/src/application/user/user.controller.ts b/idp/src/application/user/user.controller.ts index 25b0304..fa5e0ed 100644 --- a/idp/src/application/user/user.controller.ts +++ b/idp/src/application/user/user.controller.ts @@ -10,11 +10,9 @@ import { } from '@nestjs/common'; import { UserService } from './user.service'; import { AuthGuard, Roles, RolesGuard } from 'src/core/secure/guards'; -import { Client } from 'src/model/client.entity'; -import { AuthenticatedRequest } from 'src/model'; +import { AuthenticatedRequest, Client, RedirectUri } from 'src/model'; import { CreateClientDto } from 'src/model/dto/create-client.dto'; import { ClientService } from 'src/client/client.service'; -import { RedirectUri } from 'src/model/redirect-uri.entity'; @UseGuards(AuthGuard, RolesGuard) @Controller('app/user') diff --git a/idp/src/application/user/user.service.ts b/idp/src/application/user/user.service.ts index dfffb84..96c2fff 100644 --- a/idp/src/application/user/user.service.ts +++ b/idp/src/application/user/user.service.ts @@ -1,7 +1,5 @@ import { Injectable } from '@nestjs/common'; -import { Client, ClientRepository } from 'src/model/client.entity'; -import { LogRepository } from 'src/model/log.entity'; -import { User } from 'src/model/user.entity'; +import { ClientRepository, LogRepository, User, Client } from 'src/model'; @Injectable() export class UserService { diff --git a/idp/src/auth/auth.controller.ts b/idp/src/auth/auth.controller.ts index ae1f80e..730c738 100644 --- a/idp/src/auth/auth.controller.ts +++ b/idp/src/auth/auth.controller.ts @@ -2,10 +2,10 @@ import { Body, Controller, Get, Post, Query } from '@nestjs/common'; import { UsersService } from 'src/users/users.service'; import { ClientService } from 'src/client/client.service'; import { FormDataRequest } from 'nestjs-form-data'; -import { Client } from 'src/model/client.entity'; import { CustomLogger } from 'src/core/custom.logger'; import { CreateUserDto } from 'src/model/dto/create-user.dto'; import { RequestResetPwDto, ResetPWDto } from 'src/model/dto'; +import { Client } from 'src/model'; @Controller('auth') export class AuthController { diff --git a/idp/src/auth/auth.module.ts b/idp/src/auth/auth.module.ts index 8ec13ae..6604f78 100644 --- a/idp/src/auth/auth.module.ts +++ b/idp/src/auth/auth.module.ts @@ -4,31 +4,13 @@ import { UsersService } from 'src/users/users.service'; import { ClientService } from 'src/client/client.service'; import { JwtModule } from '@nestjs/jwt'; 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 { SessionKey, SessionKeyRepository } from 'src/model/session-key.entity'; import { ConfigModule, ConfigService } from '@nestjs/config'; -import { Role, RoleRepository } from 'src/model/role.entity'; import { DatabaseModule } from 'src/core/database/database.module'; import { MailModule } from 'src/application/mail/mail.module'; @Module({ - providers: [ - UsersService, - ClientService, - UserRepository, - ClientRepository, - AuthorizationCodeRepository, - SessionKeyRepository, - RoleRepository, - ], + providers: [UsersService, ClientService], controllers: [AuthController], imports: [ JwtModule.registerAsync({ @@ -40,14 +22,6 @@ import { MailModule } from 'src/application/mail/mail.module'; }), }), NestjsFormDataModule, - TypeOrmModule.forFeature([ - User, - Client, - RedirectUri, - AuthorizationCode, - SessionKey, - Role, - ]), LoggerModule, DatabaseModule, MailModule, diff --git a/idp/src/client/client.service.ts b/idp/src/client/client.service.ts index 7cb57c3..8a050e7 100644 --- a/idp/src/client/client.service.ts +++ b/idp/src/client/client.service.ts @@ -1,8 +1,12 @@ import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; +import { + ClientRepository, + RedirectRepository, + User, + Client, + RedirectUri, +} from 'src/model'; 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() export class ClientService { diff --git a/idp/src/core/custom.logger.ts b/idp/src/core/custom.logger.ts index 99b21e9..9b5b9bc 100644 --- a/idp/src/core/custom.logger.ts +++ b/idp/src/core/custom.logger.ts @@ -1,7 +1,7 @@ import { LoggerService, Injectable, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { InjectRepository } from '@nestjs/typeorm'; -import { Log, LOGMESSAGETYPE } from 'src/model/log.entity'; +import { Log, LOGMESSAGETYPE } from 'src/model'; import { Repository } from 'typeorm'; @Injectable() diff --git a/idp/src/core/database/database.module.ts b/idp/src/core/database/database.module.ts index e0b2155..982bb47 100644 --- a/idp/src/core/database/database.module.ts +++ b/idp/src/core/database/database.module.ts @@ -1,18 +1,27 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { + User, + Client, + RedirectUri, + SessionKey, + Log, + ResetPwCode, + UserRepository, + ClientRepository, + SessionKeyRepository, + RedirectRepository, + LogRepository, + ResetPwCodeRepository, AuthorizationCode, AuthorizationCodeRepository, -} from 'src/model/auth-code.entity'; -import { Client, ClientRepository } from 'src/model/client.entity'; -import { Log, LogRepository } from 'src/model/log.entity'; -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'; + Role, + RoleRepository, +} from 'src/model'; const ENTITIES = [ User, + Role, Client, RedirectUri, AuthorizationCode, @@ -28,12 +37,13 @@ const REPOSITORIES = [ RedirectRepository, LogRepository, ResetPwCodeRepository, + RoleRepository, ]; @Module({ imports: [TypeOrmModule.forFeature(ENTITIES)], controllers: [], providers: [...REPOSITORIES], - exports: [...REPOSITORIES], + exports: [...REPOSITORIES, TypeOrmModule], }) export class DatabaseModule {} diff --git a/idp/src/core/logger.module.ts b/idp/src/core/logger.module.ts index e56febc..24ff023 100644 --- a/idp/src/core/logger.module.ts +++ b/idp/src/core/logger.module.ts @@ -1,13 +1,11 @@ import { Module } from '@nestjs/common'; -import { Log } from 'src/model/log.entity'; import { CustomLogger } from './custom.logger'; -import { TypeOrmModule } from '@nestjs/typeorm'; import { DatabaseModule } from './database/database.module'; @Module({ providers: [CustomLogger], controllers: [], - imports: [TypeOrmModule.forFeature([Log]), DatabaseModule], + imports: [DatabaseModule], exports: [CustomLogger], }) export class LoggerModule {} diff --git a/idp/src/core/secure/guards/role.decorator.ts b/idp/src/core/secure/guards/role.decorator.ts index 0d14223..b037672 100644 --- a/idp/src/core/secure/guards/role.decorator.ts +++ b/idp/src/core/secure/guards/role.decorator.ts @@ -1,3 +1,3 @@ import { SetMetadata } from '@nestjs/common'; -export const Roles = (...roles: string[]) => SetMetadata('roles', roles); \ No newline at end of file +export const Roles = (...roles: string[]) => SetMetadata('roles', roles); diff --git a/idp/src/core/secure/guards/roles.guard.ts b/idp/src/core/secure/guards/roles.guard.ts index e3388ea..9965287 100644 --- a/idp/src/core/secure/guards/roles.guard.ts +++ b/idp/src/core/secure/guards/roles.guard.ts @@ -1,6 +1,6 @@ import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; -import { User } from 'src/model/user.entity'; +import { User } from 'src/model'; @Injectable() export class RolesGuard implements CanActivate { diff --git a/idp/src/model/auth-code.entity.ts b/idp/src/model/entity/auth-code.entity.ts similarity index 90% rename from idp/src/model/auth-code.entity.ts rename to idp/src/model/entity/auth-code.entity.ts index 7fb1441..9e01977 100644 --- a/idp/src/model/auth-code.entity.ts +++ b/idp/src/model/entity/auth-code.entity.ts @@ -5,9 +5,8 @@ import { PrimaryColumn, Repository, } from 'typeorm'; -import { Client } from './client.entity'; -import { User } from './user.entity'; import { Injectable } from '@nestjs/common'; +import { Client, User } from './'; @Entity() export class AuthorizationCode { diff --git a/idp/src/model/client.entity.ts b/idp/src/model/entity/client.entity.ts similarity index 88% rename from idp/src/model/client.entity.ts rename to idp/src/model/entity/client.entity.ts index 789578c..f550482 100644 --- a/idp/src/model/client.entity.ts +++ b/idp/src/model/entity/client.entity.ts @@ -11,9 +11,7 @@ import { JoinTable, CreateDateColumn, } from 'typeorm'; -import { RedirectUri } from './redirect-uri.entity'; -import { AuthorizationCode } from './auth-code.entity'; -import { User } from './user.entity'; +import { AuthorizationCode, RedirectUri, User } from '.'; @Entity() export class Client { diff --git a/idp/src/model/entity/index.ts b/idp/src/model/entity/index.ts new file mode 100644 index 0000000..1a8afb7 --- /dev/null +++ b/idp/src/model/entity/index.ts @@ -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'; diff --git a/idp/src/model/log.entity.ts b/idp/src/model/entity/log.entity.ts similarity index 100% rename from idp/src/model/log.entity.ts rename to idp/src/model/entity/log.entity.ts diff --git a/idp/src/model/redirect-uri.entity.ts b/idp/src/model/entity/redirect-uri.entity.ts similarity index 100% rename from idp/src/model/redirect-uri.entity.ts rename to idp/src/model/entity/redirect-uri.entity.ts diff --git a/idp/src/model/reset-pw.entity.ts b/idp/src/model/entity/reset-pw.entity.ts similarity index 100% rename from idp/src/model/reset-pw.entity.ts rename to idp/src/model/entity/reset-pw.entity.ts diff --git a/idp/src/model/role.entity.ts b/idp/src/model/entity/role.entity.ts similarity index 100% rename from idp/src/model/role.entity.ts rename to idp/src/model/entity/role.entity.ts diff --git a/idp/src/model/session-key.entity.ts b/idp/src/model/entity/session-key.entity.ts similarity index 100% rename from idp/src/model/session-key.entity.ts rename to idp/src/model/entity/session-key.entity.ts diff --git a/idp/src/model/user.entity.ts b/idp/src/model/entity/user.entity.ts similarity index 100% rename from idp/src/model/user.entity.ts rename to idp/src/model/entity/user.entity.ts diff --git a/idp/src/model/index.ts b/idp/src/model/index.ts index fc141f7..163258b 100644 --- a/idp/src/model/index.ts +++ b/idp/src/model/index.ts @@ -1 +1,2 @@ export * from './interface'; +export * from './entity'; diff --git a/idp/src/model/interface/authenticated.request.ts b/idp/src/model/interface/authenticated.request.ts index 949c535..2020e79 100644 --- a/idp/src/model/interface/authenticated.request.ts +++ b/idp/src/model/interface/authenticated.request.ts @@ -1,4 +1,4 @@ -import { User } from '../user.entity'; +import { User } from '../entity'; export interface AuthenticatedRequest extends Request { user: User; diff --git a/idp/src/users/users.service.ts b/idp/src/users/users.service.ts index 6684ceb..b295dc5 100644 --- a/idp/src/users/users.service.ts +++ b/idp/src/users/users.service.ts @@ -1,20 +1,21 @@ import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; -import { User, UserRepository } from 'src/model/user.entity'; import { v4 as uuidv4 } from 'uuid'; import * as bcrypt from 'bcrypt'; import { ClientService } from 'src/client/client.service'; -import { - AuthorizationCode, - AuthorizationCodeRepository, -} from 'src/model/auth-code.entity'; import { JwtService } from '@nestjs/jwt'; import { CustomLogger } from 'src/core/custom.logger'; 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 { ResetPwCodeRepository } from 'src/model/reset-pw.entity'; import { MailService } from 'src/application/mail/mail.service'; +import { + UserRepository, + SessionKeyRepository, + ResetPwCodeRepository, + User, + Client, + AuthorizationCodeRepository, + AuthorizationCode, +} from 'src/model'; @Injectable() export class UsersService { @@ -301,7 +302,7 @@ export class UsersService { savedCode.user.password = hashedPassword; await this.userRepo.save(savedCode.user); 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 }; } }