zurri / src /entities /User.ts
nexusbert's picture
add security
48f4e54
import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
OneToMany,
OneToOne,
} from 'typeorm';
import { Agent } from './Agent';
import { Subscription } from './Subscription';
import { ApiKey } from './ApiKey';
import { Wallet } from './Wallet';
@Entity('users')
export class User {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ unique: true })
email: string;
@Column()
password: string; // Hashed
@Column({ nullable: true })
name?: string;
@Column({ default: false })
isAdmin: boolean;
@Column({ default: false })
isCreator: boolean;
@Column({ default: true })
isActive: boolean;
@Column({ nullable: true })
passwordResetToken?: string;
@Column({ nullable: true })
passwordResetExpires?: Date;
@Column({ default: 0 })
failedLoginAttempts: number;
@Column({ nullable: true })
lockedUntil?: Date;
@OneToMany(() => Agent, (agent) => agent.creator)
agents: Agent[];
@OneToMany(() => Subscription, (subscription) => subscription.user)
subscriptions: Subscription[];
@OneToMany(() => ApiKey, (apiKey) => apiKey.user)
apiKeys: ApiKey[];
@OneToOne(() => Wallet, (wallet) => wallet.user)
wallet: Wallet;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
}