This commit is contained in:
Bastian Wagner
2024-09-05 12:21:16 +02:00
parent 271bd2f99c
commit 8cae6fd555
3 changed files with 46 additions and 2 deletions

View File

@@ -15,6 +15,7 @@ import {
import { LoggerModule } from 'src/core/logger.module'; import { LoggerModule } from 'src/core/logger.module';
import { SessionKey, SessionKeyRepository } from 'src/model/session-key.entity'; 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';
@Module({ @Module({
providers: [ providers: [
@@ -24,6 +25,7 @@ import { ConfigModule, ConfigService } from '@nestjs/config';
ClientRepository, ClientRepository,
AuthorizationCodeRepository, AuthorizationCodeRepository,
SessionKeyRepository, SessionKeyRepository,
RoleRepository,
], ],
controllers: [AuthController], controllers: [AuthController],
imports: [ imports: [
@@ -42,6 +44,7 @@ import { ConfigModule, ConfigService } from '@nestjs/config';
RedirectUri, RedirectUri,
AuthorizationCode, AuthorizationCode,
SessionKey, SessionKey,
Role,
]), ]),
LoggerModule, LoggerModule,
], ],

View File

@@ -0,0 +1,35 @@
import { Injectable } from '@nestjs/common';
import { Exclude } from 'class-transformer';
import {
Entity,
Column,
PrimaryGeneratedColumn,
DataSource,
Repository,
ManyToOne,
} from 'typeorm';
import { User } from './user.entity';
@Entity()
export class Role {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
name: string;
@Exclude()
@ManyToOne(() => User, (user) => user.role)
users: User[];
}
@Injectable()
export class RoleRepository extends Repository<Role> {
constructor(dataSource: DataSource) {
super(Role, dataSource.createEntityManager());
}
findById(id: string): Promise<Role> {
return this.findOneBy({ id });
}
}

View File

@@ -8,9 +8,11 @@ import {
Repository, Repository,
OneToMany, OneToMany,
CreateDateColumn, CreateDateColumn,
ManyToOne,
} from 'typeorm'; } from 'typeorm';
import { AuthorizationCode } from './auth-code.entity'; import { AuthorizationCode } from './auth-code.entity';
import { SessionKey } from './session-key.entity'; import { SessionKey } from './session-key.entity';
import { Role } from './role.entity';
@Entity() @Entity()
export class User { export class User {
@@ -45,6 +47,10 @@ export class User {
@OneToMany(() => SessionKey, (key) => key.user) @OneToMany(() => SessionKey, (key) => key.user)
sessionKeys: SessionKey[]; sessionKeys: SessionKey[];
@Exclude()
@ManyToOne(() => Role, (role) => role.users)
role?: Role;
accessToken?: string; accessToken?: string;
refreshToken?: string; refreshToken?: string;
} }
@@ -56,10 +62,10 @@ export class UserRepository extends Repository<User> {
} }
findByUsername(username: string): Promise<User> { findByUsername(username: string): Promise<User> {
return this.findOneBy({ username }); return this.findOne({where: { username }, relations: ['role']});
} }
findById(id: string): Promise<User> { findById(id: string): Promise<User> {
return this.findOneBy({ id }); return this.findOne({where: { id }, relations: ['role']});
} }
} }