2022-08-17 21:59:51 +02:00
|
|
|
import {
|
|
|
|
Entity,
|
|
|
|
Column,
|
|
|
|
PrimaryGeneratedColumn,
|
|
|
|
ManyToOne,
|
|
|
|
OneToMany,
|
|
|
|
OneToOne
|
|
|
|
} from 'typeorm';
|
2022-08-25 23:42:12 +02:00
|
|
|
import { UserRole } from '../dto';
|
2022-08-17 21:59:51 +02:00
|
|
|
|
2022-08-24 10:41:56 +02:00
|
|
|
export enum tfaTypes {
|
|
|
|
NONE = 0,
|
|
|
|
EMAIL = 1,
|
|
|
|
TOTP = 2
|
|
|
|
}
|
|
|
|
|
2022-08-17 21:59:51 +02:00
|
|
|
@Entity()
|
|
|
|
export class INode {
|
|
|
|
@PrimaryGeneratedColumn()
|
|
|
|
id: number;
|
|
|
|
@Column()
|
|
|
|
isFile: boolean;
|
|
|
|
@Column()
|
|
|
|
name: string;
|
|
|
|
@Column({ nullable: true })
|
|
|
|
size: number;
|
|
|
|
|
|
|
|
@Column({ nullable: true })
|
|
|
|
parentId: number;
|
|
|
|
@ManyToOne(() => INode, (node) => node.children)
|
|
|
|
parent: Promise<INode>;
|
|
|
|
@OneToMany(() => INode, (node) => node.parent)
|
|
|
|
children: Promise<INode[]>;
|
|
|
|
|
|
|
|
@Column({ nullable: true })
|
|
|
|
ownerId: number;
|
|
|
|
@ManyToOne(() => User)
|
|
|
|
owner: Promise<User>;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Entity()
|
|
|
|
export class User {
|
|
|
|
@PrimaryGeneratedColumn()
|
|
|
|
id: number;
|
2022-08-24 21:27:04 +02:00
|
|
|
@Column({ default: false })
|
|
|
|
isGitlabUser: boolean;
|
2022-08-17 21:59:51 +02:00
|
|
|
@Column()
|
|
|
|
name: string;
|
|
|
|
@Column()
|
|
|
|
password: string;
|
|
|
|
@Column({
|
|
|
|
type: 'int',
|
|
|
|
default: UserRole.DISABLED,
|
|
|
|
transformer: {
|
|
|
|
from: (db: number): UserRole => db,
|
|
|
|
to: (role: UserRole): number => role
|
|
|
|
}
|
|
|
|
})
|
|
|
|
role: UserRole;
|
|
|
|
|
|
|
|
@Column({ nullable: true })
|
|
|
|
rootId: number;
|
|
|
|
@OneToOne(() => INode)
|
|
|
|
root: Promise<INode>;
|
2022-08-24 10:41:56 +02:00
|
|
|
|
|
|
|
@Column({
|
|
|
|
type: 'int',
|
|
|
|
default: tfaTypes.NONE,
|
|
|
|
transformer: {
|
|
|
|
from: (db: number): tfaTypes => db,
|
|
|
|
to: (type: tfaTypes): number => type
|
|
|
|
}
|
|
|
|
})
|
|
|
|
tfaType: tfaTypes;
|
|
|
|
|
|
|
|
@Column({ nullable: true })
|
|
|
|
tfaSecret: string;
|
2022-08-24 21:27:04 +02:00
|
|
|
|
|
|
|
@Column({ nullable: true })
|
|
|
|
gitlabAT: string;
|
|
|
|
@Column({ nullable: true })
|
|
|
|
gitlabRT: string;
|
2022-08-17 21:59:51 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Entity()
|
|
|
|
export class JWTToken {
|
|
|
|
@PrimaryGeneratedColumn()
|
|
|
|
id: number;
|
|
|
|
|
|
|
|
@Column()
|
|
|
|
ownerId: number;
|
|
|
|
|
|
|
|
@Column({ nullable: true })
|
|
|
|
exp: number;
|
|
|
|
}
|