UNPKG

will-core

Version:
59 lines (58 loc) 2.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OneTimeHandler = void 0; const will_db_1 = require("will-db"); const will_api_1 = require("will-api"); const will_util_1 = require("will-util"); const VerifyError_1 = require("../models/VerifyError"); const EnvironmentVariable_1 = require("../utils/EnvironmentVariable"); const ActivateHandler_1 = require("./ActivateHandler"); class OneTimeHandler extends ActivateHandler_1.ActivateHandler { createActivateKey() { return will_util_1.RandomUtility.randomNumber(EnvironmentVariable_1.DEFAULT_ONETIME_LENGTH); } async performInvalidating(db, info, invalidatetimes = EnvironmentVariable_1.DEFAULT_INVALIDATE_TIMES) { let ainfo = await super.performInvalidating(db, info, invalidatetimes); if (ainfo) { let difftimes = will_util_1.Utilities.now().getTime() - ainfo.transtime; this.logger.debug(this.constructor.name + ".invalidate: difftimes=" + difftimes + ", invalidatetimes=" + invalidatetimes); if (difftimes > invalidatetimes) { return Promise.reject(new VerifyError_1.VerifyError("Over time", will_api_1.HTTP.NOT_ALLOWED, -18803, "transtime")); } if ("A" == ainfo.activatestatus) { return Promise.reject(new VerifyError_1.VerifyError("Already Activated", will_api_1.HTTP.NOT_ALLOWED, -18804, "activatestatus")); } } return ainfo; } validateKeyFields(context) { let vi = super.validateKeyFields(context); if (vi.valid) { vi = this.validateParameters(context.params, "activateuser"); } return vi; } async updateActivation(db, info) { return await this.updateActivateByKeyAndUser(db, info); } async doRemove(context, model) { let vi = this.validateParameters(context.params, "activatekey", "activateuser"); if (!vi.valid) { return Promise.reject(new VerifyError_1.VerifyError("Parameter not found (" + vi.info + ")", will_api_1.HTTP.NOT_ACCEPTABLE, -16061)); } let db = this.getPrivateConnector(model); try { let rs = this.doRemoving(context, db); return await this.createCipherData(context, will_db_1.Operation.REMOVE, rs); } catch (ex) { this.logger.error(this.constructor.name, ex); return Promise.reject(this.getDBError(ex)); } finally { if (db) db.close(); } } } exports.OneTimeHandler = OneTimeHandler;