change user model to login routine
This commit is contained in:
parent
c35b99e0c4
commit
03a5bb3592
5 changed files with 56 additions and 3 deletions
|
@ -55,6 +55,7 @@ import { QueryUpdatedAt1744795756230 } from "./migrations/1744795756230-QueryUpd
|
|||
import { SettingsFromEnv1745059495808 } from "./migrations/1745059495808-settingsFromEnv";
|
||||
import { MemberCreatedAt1746006549262 } from "./migrations/1746006549262-memberCreatedAt";
|
||||
import { UserLoginRoutine1746252454922 } from "./migrations/1746252454922-UserLoginRoutine";
|
||||
import { SettingsFromEnv_SET1745059495808 } from "./migrations/1745059495808-settingsFromEnv_set";
|
||||
|
||||
const dataSource = new DataSource({
|
||||
type: DB_TYPE as any,
|
||||
|
@ -119,6 +120,7 @@ const dataSource = new DataSource({
|
|||
SettingsFromEnv1745059495808,
|
||||
SettingsFromEnv_SET1745059495808,
|
||||
MemberCreatedAt1746006549262,
|
||||
UserLoginRoutine1746252454922,
|
||||
],
|
||||
migrationsRun: true,
|
||||
migrationsTransactionMode: "each",
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { Column, Entity, JoinTable, ManyToMany, OneToMany, PrimaryColumn } from "typeorm";
|
||||
import { role } from "./role";
|
||||
import { userPermission } from "./user_permission";
|
||||
import { LoginRoutineEnum } from "../../enums/loginRoutineEnum";
|
||||
|
||||
@Entity()
|
||||
export class user {
|
||||
|
@ -19,11 +20,23 @@ export class user {
|
|||
@Column({ type: "varchar", length: 255 })
|
||||
lastname: string;
|
||||
|
||||
@Column({ type: "varchar", length: 255 })
|
||||
@Column({ type: "text", select: false })
|
||||
secret: string;
|
||||
|
||||
@Column({ type: "boolean", default: false })
|
||||
static: boolean;
|
||||
@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;
|
||||
|
|
4
src/enums/loginRoutineEnum.ts
Normal file
4
src/enums/loginRoutineEnum.ts
Normal file
|
@ -0,0 +1,4 @@
|
|||
export enum LoginRoutineEnum {
|
||||
password = "password", // login with self defined password
|
||||
totp = "totp", // login with totp by auth apps
|
||||
}
|
|
@ -7,6 +7,7 @@ import UserService from "../service/management/userService";
|
|||
import DatabaseActionException from "../exceptions/databaseActionException";
|
||||
import { availableTemplates } from "../type/templateTypes";
|
||||
import SettingHelper from "./settingsHelper";
|
||||
import { LoginRoutineEnum } from "../enums/loginRoutineEnum";
|
||||
|
||||
export type BackupSection =
|
||||
| "member"
|
||||
|
@ -806,6 +807,7 @@ export default abstract class BackupHelper {
|
|||
let roles = await this.transactionManager.getRepository("role").find();
|
||||
let dataWithMappedIds = (data?.["user"] ?? []).map((u) => ({
|
||||
...u,
|
||||
routine: u.routine ?? LoginRoutineEnum.totp,
|
||||
roles: u.roles.map((r: any) => ({
|
||||
...r,
|
||||
id: roles.find((role) => role.role == r.role)?.id ?? undefined,
|
||||
|
|
32
src/migrations/1746252454922-UserLoginRoutine.ts
Normal file
32
src/migrations/1746252454922-UserLoginRoutine.ts
Normal file
|
@ -0,0 +1,32 @@
|
|||
import { MigrationInterface, QueryRunner, TableColumn } from "typeorm";
|
||||
import { getDefaultByORM, getTypeByORM } from "./ormHelper";
|
||||
|
||||
export class UserLoginRoutine1746252454922 implements MigrationInterface {
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
let users = await queryRunner.manager.getRepository("user").find({ select: ["id", "secret"] });
|
||||
|
||||
await queryRunner.dropColumns("user", ["secret", "static"]);
|
||||
|
||||
await queryRunner.addColumns("user", [
|
||||
new TableColumn({ name: "secret", ...getTypeByORM("text") }),
|
||||
new TableColumn({ name: "routine", ...getTypeByORM("varchar") }),
|
||||
]);
|
||||
|
||||
await queryRunner.manager.getRepository("user").save(users.map((u) => ({ id: u.id, secret: u.secret })));
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
let users = await queryRunner.manager.getRepository("user").find({ select: ["id", "secret"] });
|
||||
|
||||
await queryRunner.dropColumn("user", "secret");
|
||||
|
||||
await queryRunner.addColumns("user", [
|
||||
new TableColumn({ name: "secret", ...getTypeByORM("varchar") }),
|
||||
new TableColumn({ name: "static", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", false) }),
|
||||
]);
|
||||
|
||||
await queryRunner.manager.getRepository("user").save(users.map((u) => ({ id: u.id, secret: u.secret })));
|
||||
|
||||
await queryRunner.dropColumn("user", "routine");
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue