import DB from "../database"; import { ModelDataBase } from "@hibas123/safe_mongo/lib/model"; import { ObjectID } from "bson"; export enum TFATypes { OTC, BACKUP_CODE, U2F, APP_ALLOW } export interface ITwoFactor extends ModelDataBase { user: ObjectID valid: boolean expires?: Date; name?: string; type: TFATypes data: any; } export interface IOTP extends ITwoFactor { data: string; } export interface IYubiKey extends ITwoFactor { data: { registration?: any; publicKey: string; keyHandle: string; } } export interface IU2F extends ITwoFactor { data: { challenge?: string; publicKey: string; keyHandle: string; registration?: string; } } const TwoFactor = DB.addModel({ name: "twofactor", versions: [{ migration: (e) => { }, schema: { user: { type: ObjectID }, valid: { type: Boolean }, expires: { type: Date, optional: true }, name: { type: String, optional: true }, type: { type: Number }, data: { type: "any" }, } }] }); export default TwoFactor;