ff-admin-server/src/entity/management/user.ts

63 lines
1.6 KiB
TypeScript

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, "<self>"),
})
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[];
}