will-core
Version:
core module
59 lines (58 loc) • 2.65 kB
JavaScript
;
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;