import { Column, Entity, JoinTable, ManyToMany, OneToMany, PrimaryColumn } from "typeorm"; import { role } from "./role"; import { userPermission } from "./user_permission"; import { LoginRoutineEnum } from "../../enums/loginRoutineEnum"; import { CodingHelper } from "../../helpers/codingHelper"; import { APPLICATION_SECRET } from "../../env.defaults"; @Entity() export class user { @PrimaryColumn({ generated: "uuid", type: "varchar" }) id: string; @Column({ type: "varchar", unique: true, length: 255 }) mail: string; @Column({ type: "varchar", unique: true, length: 255 }) username: string; @Column({ type: "varchar", length: 255 }) firstname: string; @Column({ type: "varchar", length: 255 }) lastname: string; @Column({ type: "text", select: false, transformer: CodingHelper.entityBaseCoding(APPLICATION_SECRET, ""), }) secret: string; @Column({ type: "varchar", length: "255", default: LoginRoutineEnum.totp, transformer: { to(value: LoginRoutineEnum) { return value.toString(); }, from(value: string) { return LoginRoutineEnum[value as keyof typeof LoginRoutineEnum]; }, }, }) routine: LoginRoutineEnum; @Column({ type: "boolean", default: false }) isOwner: boolean; @ManyToMany(() => role, (role) => role.users, { nullable: false, onDelete: "CASCADE", onUpdate: "RESTRICT", cascade: ["insert"], }) @JoinTable({ name: "user_roles", }) roles: role[]; @OneToMany(() => userPermission, (userPermission) => userPermission.user, { cascade: ["insert"] }) permissions: userPermission[]; }