apps/api/src/entities/user.entity.ts
Properties |
accessToken |
Type : string
|
Decorators :
@Column({nullable: true})
|
Defined in apps/api/src/entities/user.entity.ts:34
|
active |
Type : boolean
|
Decorators :
@Column({type: 'boolean', default: false})
|
Defined in apps/api/src/entities/user.entity.ts:46
|
confirmationCodes |
Type : ConfirmCodeEntity[]
|
Decorators :
@OneToMany(undefined, confirmCode => confirmCode.user)
|
Defined in apps/api/src/entities/user.entity.ts:55
|
createdAt |
Type : Date
|
Decorators :
@CreateDateColumn()
|
Defined in apps/api/src/entities/user.entity.ts:40
|
Type : string
|
Decorators :
@Column()
|
Defined in apps/api/src/entities/user.entity.ts:28
|
firstName |
Type : string
|
Decorators :
@Column({nullable: true})
|
Defined in apps/api/src/entities/user.entity.ts:22
|
id |
Type : number
|
Decorators :
@PrimaryGeneratedColumn()
|
Defined in apps/api/src/entities/user.entity.ts:19
|
isTwoFAEnabled |
Type : boolean
|
Decorators :
@Column({type: 'boolean', default: false})
|
Defined in apps/api/src/entities/user.entity.ts:61
|
lastName |
Type : string
|
Decorators :
@Column({nullable: true})
|
Defined in apps/api/src/entities/user.entity.ts:25
|
password |
Type : string
|
Decorators :
@Column({nullable: true})
|
Defined in apps/api/src/entities/user.entity.ts:31
|
passwordResetCode |
Type : string | null
|
Decorators :
@Column()
|
Defined in apps/api/src/entities/user.entity.ts:49
|
passwordResetExpiredTime |
Type : string | null
|
Decorators :
@Column()
|
Defined in apps/api/src/entities/user.entity.ts:52
|
refreshToken |
Type : string
|
Decorators :
@Column({nullable: true})
|
Defined in apps/api/src/entities/user.entity.ts:37
|
twoFASecret |
Type : string | null
|
Decorators :
@Column()
|
Defined in apps/api/src/entities/user.entity.ts:58
|
updatedAt |
Type : Date
|
Decorators :
@UpdateDateColumn()
|
Defined in apps/api/src/entities/user.entity.ts:43
|
import {
BeforeInsert,
BeforeUpdate,
Column,
CreateDateColumn,
Entity,
OneToMany,
PrimaryGeneratedColumn,
UpdateDateColumn
} from 'typeorm'
import { UserInterface } from '@isomera/interfaces'
import bcrypt from 'bcryptjs'
import { ConfirmCodeEntity } from './confirm-code.entity'
import { DateTime } from 'luxon'
@Entity({ name: 'users' })
export class UserEntity implements UserInterface {
@PrimaryGeneratedColumn()
id: number
@Column({ nullable: true })
firstName: string
@Column({ nullable: true })
lastName: string
@Column()
email: string
@Column({ nullable: true })
password: string
@Column({ nullable: true })
accessToken: string
@Column({ nullable: true })
refreshToken: string
@CreateDateColumn()
createdAt: Date
@UpdateDateColumn()
updatedAt: Date
@Column({ type: 'boolean', default: false })
active: boolean
@Column()
passwordResetCode: string | null
@Column()
passwordResetExpiredTime: string | null
@OneToMany(() => ConfirmCodeEntity, confirmCode => confirmCode.user)
confirmationCodes: ConfirmCodeEntity[]
@Column()
twoFASecret: string | null
@Column({ type: 'boolean', default: false })
isTwoFAEnabled: boolean
@BeforeInsert()
@BeforeUpdate()
async hashPassword(): Promise<void> {
if (this.password) {
const salt = await bcrypt.genSalt()
if (!/^\$2[abxy]?\$\d+\$/.test(this.password)) {
this.password = await bcrypt.hash(this.password, salt)
}
}
}
async checkPassword(plainPassword: string): Promise<boolean> {
return await bcrypt.compare(plainPassword, String(this.password))
}
public isValidResetCodeTime() {
const expiresAt = DateTime.fromFormat(
this.passwordResetExpiredTime,
'yyyy-MM-dd HH:mm:ss'
)
return DateTime.now() <= expiresAt
}
}