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 { SettingsFromEnv1745059495808 } from "./migrations/1745059495808-settingsFromEnv";
|
||||||
import { MemberCreatedAt1746006549262 } from "./migrations/1746006549262-memberCreatedAt";
|
import { MemberCreatedAt1746006549262 } from "./migrations/1746006549262-memberCreatedAt";
|
||||||
import { UserLoginRoutine1746252454922 } from "./migrations/1746252454922-UserLoginRoutine";
|
import { UserLoginRoutine1746252454922 } from "./migrations/1746252454922-UserLoginRoutine";
|
||||||
|
import { SettingsFromEnv_SET1745059495808 } from "./migrations/1745059495808-settingsFromEnv_set";
|
||||||
|
|
||||||
const dataSource = new DataSource({
|
const dataSource = new DataSource({
|
||||||
type: DB_TYPE as any,
|
type: DB_TYPE as any,
|
||||||
|
@ -119,6 +120,7 @@ const dataSource = new DataSource({
|
||||||
SettingsFromEnv1745059495808,
|
SettingsFromEnv1745059495808,
|
||||||
SettingsFromEnv_SET1745059495808,
|
SettingsFromEnv_SET1745059495808,
|
||||||
MemberCreatedAt1746006549262,
|
MemberCreatedAt1746006549262,
|
||||||
|
UserLoginRoutine1746252454922,
|
||||||
],
|
],
|
||||||
migrationsRun: true,
|
migrationsRun: true,
|
||||||
migrationsTransactionMode: "each",
|
migrationsTransactionMode: "each",
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { Column, Entity, JoinTable, ManyToMany, OneToMany, PrimaryColumn } from "typeorm";
|
import { Column, Entity, JoinTable, ManyToMany, OneToMany, PrimaryColumn } from "typeorm";
|
||||||
import { role } from "./role";
|
import { role } from "./role";
|
||||||
import { userPermission } from "./user_permission";
|
import { userPermission } from "./user_permission";
|
||||||
|
import { LoginRoutineEnum } from "../../enums/loginRoutineEnum";
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class user {
|
export class user {
|
||||||
|
@ -19,11 +20,23 @@ export class user {
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255 })
|
||||||
lastname: string;
|
lastname: string;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "text", select: false })
|
||||||
secret: string;
|
secret: string;
|
||||||
|
|
||||||
@Column({ type: "boolean", default: false })
|
@Column({
|
||||||
static: boolean;
|
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 })
|
@Column({ type: "boolean", default: false })
|
||||||
isOwner: boolean;
|
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 DatabaseActionException from "../exceptions/databaseActionException";
|
||||||
import { availableTemplates } from "../type/templateTypes";
|
import { availableTemplates } from "../type/templateTypes";
|
||||||
import SettingHelper from "./settingsHelper";
|
import SettingHelper from "./settingsHelper";
|
||||||
|
import { LoginRoutineEnum } from "../enums/loginRoutineEnum";
|
||||||
|
|
||||||
export type BackupSection =
|
export type BackupSection =
|
||||||
| "member"
|
| "member"
|
||||||
|
@ -806,6 +807,7 @@ export default abstract class BackupHelper {
|
||||||
let roles = await this.transactionManager.getRepository("role").find();
|
let roles = await this.transactionManager.getRepository("role").find();
|
||||||
let dataWithMappedIds = (data?.["user"] ?? []).map((u) => ({
|
let dataWithMappedIds = (data?.["user"] ?? []).map((u) => ({
|
||||||
...u,
|
...u,
|
||||||
|
routine: u.routine ?? LoginRoutineEnum.totp,
|
||||||
roles: u.roles.map((r: any) => ({
|
roles: u.roles.map((r: any) => ({
|
||||||
...r,
|
...r,
|
||||||
id: roles.find((role) => role.role == r.role)?.id ?? undefined,
|
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