import { Jsonify } from "type-fest"; import { PasswordHistoryData } from "../data/passwordHistoryData"; import { PasswordHistoryView } from "../view/passwordHistoryView"; import Domain from "./domainBase"; import { EncString } from "./encString"; import { SymmetricCryptoKey } from "./symmetricCryptoKey"; export class Password extends Domain { password: EncString; lastUsedDate: Date; constructor(obj?: PasswordHistoryData) { super(); if (obj == null) { return; } this.buildDomainModel(this, obj, { password: null, }); this.lastUsedDate = new Date(obj.lastUsedDate); } decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise { return this.decryptObj( new PasswordHistoryView(this), { password: null, }, orgId, encKey ); } toPasswordHistoryData(): PasswordHistoryData { const ph = new PasswordHistoryData(); ph.lastUsedDate = this.lastUsedDate.toISOString(); this.buildDataModel(this, ph, { password: null, }); return ph; } static fromJSON(obj: Partial>): Password { if (obj == null) { return null; } const password = EncString.fromJSON(obj.password); const lastUsedDate = obj.lastUsedDate == null ? null : new Date(obj.lastUsedDate); return Object.assign(new Password(), obj, { password, lastUsedDate, }); } }