69 lines
1.6 KiB
TypeScript
69 lines
1.6 KiB
TypeScript
import DB from "../database";
|
|
import { ModelDataBase } from "@hibas123/safe_mongo/lib/model";
|
|
import { ObjectID } from "mongodb";
|
|
import { v4 } from "uuid";
|
|
|
|
export enum Gender {
|
|
none,
|
|
male,
|
|
female,
|
|
other
|
|
}
|
|
|
|
export enum TokenTypes {
|
|
OTC,
|
|
BACKUP_CODE
|
|
}
|
|
|
|
export interface IUser extends ModelDataBase {
|
|
uid: string;
|
|
username: string;
|
|
|
|
name: string;
|
|
birthday?: Date
|
|
gender: Gender;
|
|
admin: boolean;
|
|
password: string;
|
|
salt: string;
|
|
mails: ObjectID[];
|
|
phones: { phone: string, verified: boolean, primary: boolean }[];
|
|
twofactor: { token: string, valid: boolean, type: TokenTypes }[];
|
|
}
|
|
|
|
const User = DB.addModel<IUser>({
|
|
name: "user",
|
|
versions: [{
|
|
migration: () => { },
|
|
schema: {
|
|
uid: { type: String, default: () => v4() },
|
|
username: { type: String },
|
|
name: { type: String },
|
|
birthday: { type: Date, optional: true },
|
|
gender: { type: Number },
|
|
admin: { type: Boolean },
|
|
password: { type: String },
|
|
salt: { type: String },
|
|
mails: { type: Array, default: [] },
|
|
phones: {
|
|
array: true,
|
|
model: true,
|
|
type: {
|
|
phone: { type: String },
|
|
verified: { type: Boolean },
|
|
primary: { type: Boolean }
|
|
}
|
|
},
|
|
twofactor: {
|
|
array: true,
|
|
model: true,
|
|
type: {
|
|
token: { type: String },
|
|
valid: { type: Boolean },
|
|
type: { type: Number }
|
|
}
|
|
}
|
|
}
|
|
}]
|
|
})
|
|
|
|
export default User; |