Model Struktur
This commit is contained in:
@@ -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')
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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 {}
|
||||||
|
|||||||
@@ -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 {}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 {
|
||||||
@@ -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 {
|
||||||
8
idp/src/model/entity/index.ts
Normal file
8
idp/src/model/entity/index.ts
Normal 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';
|
||||||
@@ -1 +1,2 @@
|
|||||||
export * from './interface';
|
export * from './interface';
|
||||||
|
export * from './entity';
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user