added user data to db

This commit is contained in:
Igor Hrenowitsch Propisnov 2024-05-24 20:42:46 +02:00
parent 6285e46b7a
commit 9551ae0703
6 changed files with 54 additions and 4 deletions

View File

@ -1 +1,2 @@
export * from './user-credentials.entity'; export * from './user-credentials.entity';
export * from './user-data.entity';

View File

@ -0,0 +1,22 @@
import {
Column,
Entity,
PrimaryGeneratedColumn,
OneToOne,
JoinColumn,
} from 'typeorm';
import { UserCredentials } from './user-credentials.entity';
@Entity()
export class UserData {
@PrimaryGeneratedColumn('uuid')
public id: number;
@Column({ default: false })
public isEmailConfirmed: boolean;
@OneToOne(() => UserCredentials)
@JoinColumn()
public user: UserCredentials;
}

View File

@ -1,9 +1,10 @@
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt'; import { JwtModule } from '@nestjs/jwt';
import { TypeOrmModule } from '@nestjs/typeorm'; import { TypeOrmModule } from '@nestjs/typeorm';
import { UserCredentials } from 'src/entities/user-credentials.entity'; import { UserData, UserCredentials } from 'src/entities';
import { AuthController } from './controller/auth.controller'; import { AuthController } from './controller/auth.controller';
import { UserDataRepository } from './repositories/user-data.repository';
import { UserRepository } from './repositories/user.repository'; import { UserRepository } from './repositories/user.repository';
import { AuthService } from './services/auth.service'; import { AuthService } from './services/auth.service';
import { EncryptionService } from './services/encryption.service'; import { EncryptionService } from './services/encryption.service';
@ -13,13 +14,14 @@ import { AccessTokenStrategy, RefreshTokenStrategy } from './strategies';
@Module({ @Module({
imports: [ imports: [
JwtModule.register({}), JwtModule.register({}),
TypeOrmModule.forFeature([UserCredentials]), TypeOrmModule.forFeature([UserCredentials, UserData]),
], ],
providers: [ providers: [
AuthService, AuthService,
TokenManagementService, TokenManagementService,
EncryptionService, EncryptionService,
UserRepository, UserRepository,
UserDataRepository,
AccessTokenStrategy, AccessTokenStrategy,
RefreshTokenStrategy, RefreshTokenStrategy,
], ],

View File

@ -0,0 +1,21 @@
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { UserData } from 'src/entities';
import { Repository } from 'typeorm';
@Injectable()
export class UserDataRepository {
public constructor(
@InjectRepository(UserData)
private readonly repository: Repository<UserData>
) {}
public async createInitialUserData(userid: number): Promise<UserData> {
const userData = new UserData();
userData.id = userid;
userData.isEmailConfirmed = false;
return this.repository.save(userData);
}
}

View File

@ -1,6 +1,7 @@
import { ForbiddenException, Injectable } from '@nestjs/common'; import { ForbiddenException, Injectable } from '@nestjs/common';
import { TokensDto, UserCredentialsDto } from '../models/dto'; import { TokensDto, UserCredentialsDto } from '../models/dto';
import { UserDataRepository } from '../repositories/user-data.repository';
import { UserRepository } from '../repositories/user.repository'; import { UserRepository } from '../repositories/user.repository';
import { EncryptionService } from './encryption.service'; import { EncryptionService } from './encryption.service';
@ -10,6 +11,7 @@ import { TokenManagementService } from './token-management.service';
export class AuthService { export class AuthService {
public constructor( public constructor(
private readonly userRepository: UserRepository, private readonly userRepository: UserRepository,
private readonly UserDataRepository: UserDataRepository,
private readonly tokenManagementService: TokenManagementService, private readonly tokenManagementService: TokenManagementService,
private readonly encryptionService: EncryptionService private readonly encryptionService: EncryptionService
) {} ) {}
@ -23,6 +25,8 @@ export class AuthService {
passwordHashed passwordHashed
); );
await this.UserDataRepository.createInitialUserData(user.id);
return this.generateAndPersistTokens(user.id, user.email); return this.generateAndPersistTokens(user.id, user.email);
} }

View File

@ -1,6 +1,6 @@
import { ConfigService } from '@nestjs/config'; import { ConfigService } from '@nestjs/config';
import { TypeOrmModuleOptions } from '@nestjs/typeorm'; import { TypeOrmModuleOptions } from '@nestjs/typeorm';
import { UserCredentials } from 'src/entities'; import { UserCredentials, UserData } from 'src/entities';
export const databaseConfigFactory = ( export const databaseConfigFactory = (
configService: ConfigService configService: ConfigService
@ -13,5 +13,5 @@ export const databaseConfigFactory = (
database: configService.get('DB_NAME'), database: configService.get('DB_NAME'),
synchronize: true, synchronize: true,
logging: true, logging: true,
entities: [UserCredentials], entities: [UserCredentials, UserData],
}); });