first commit
This commit is contained in:
100
myteamwallet_backend/src/users/entities/user.entity.ts
Normal file
100
myteamwallet_backend/src/users/entities/user.entity.ts
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user