first commit

This commit is contained in:
Bastian Wagner
2026-07-31 21:02:47 +02:00
commit 6bea4f766a
512 changed files with 64459 additions and 0 deletions

View File

@@ -0,0 +1,100 @@
import {
Column,
AfterLoad,
CreateDateColumn,
DeleteDateColumn,
Entity,
Index,
ManyToOne,
PrimaryGeneratedColumn,
UpdateDateColumn,
BeforeInsert,
BeforeUpdate,
OneToMany,
} from 'typeorm';
import { Role } from '../../roles/entities/role.entity';
import { Status } from '../../statuses/entities/status.entity';
import { FileEntity } from '../../files/entities/file.entity';
import * as bcrypt from 'bcryptjs';
import { EntityHelper } from 'src/utils/entity-helper';
import { AuthProvidersEnum } from 'src/auth/auth-providers.enum';
import { Exclude, Expose } from 'class-transformer';
import { Player } from 'src/players/entities/player.entity';
@Entity()
export class User extends EntityHelper {
@PrimaryGeneratedColumn()
id: number;
@Column({ unique: true, nullable: true })
email: string | null;
@Column({ nullable: true })
@Exclude({ toPlainOnly: true })
password: string;
@Exclude({ toPlainOnly: true })
public previousPassword: string;
@AfterLoad()
public loadPreviousPassword(): void {
this.previousPassword = this.password;
}
@BeforeInsert()
@BeforeUpdate()
async setPassword() {
if (this.previousPassword !== this.password && this.password) {
const salt = await bcrypt.genSalt();
this.password = await bcrypt.hash(this.password, salt);
}
}
@Column({ default: AuthProvidersEnum.email })
@Expose({ groups: ['exposeProvider'] })
provider: string;
@Index()
@Column({ nullable: true })
socialId: string | null;
@Index()
@Column({ nullable: true })
firstName: string | null;
@Index()
@Column({ nullable: true })
lastName: string | null;
@ManyToOne(() => FileEntity, {
eager: true,
})
photo?: FileEntity | null;
@ManyToOne(() => Role, {
eager: true,
})
role?: Role | null;
@ManyToOne(() => Status, {
eager: true,
})
status?: Status;
@OneToMany(() => Player, (player) => player.user)
players: Player[];
@Column({ nullable: true })
@Index()
@Exclude({ toPlainOnly: true })
hash: string | null;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
@DeleteDateColumn()
deletedAt: Date;
}