will-core
Version:
core module
48 lines (47 loc) • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AuthenticateHandler = void 0;
const will_lib_1 = require("will-lib");
const will_api_1 = require("will-api");
const VerifyError_1 = require("../models/VerifyError");
const EnvironmentVariable_1 = require("../utils/EnvironmentVariable");
const SchemeHandler_1 = require("./SchemeHandler");
class AuthenticateHandler extends SchemeHandler_1.SchemeHandler {
constructor() {
super(...arguments);
this.model = { name: "tusertoken", alias: { privateAlias: this.section } };
//declared addon actions name
this.handlers = [{ name: "authenticate" }];
}
async authenticate(context) {
return this.callFunctional(context, { operate: "authenticate", raw: false }, this.doAuthenticate);
}
async doAuthenticate(context, model) {
if (!EnvironmentVariable_1.VALIDATE_TOKEN)
return Promise.resolve(undefined);
let atoken = await this.getAuthenToken(context, false, true);
if (atoken != undefined) {
let db = this.getPrivateConnector(model);
try {
let plib = new will_lib_1.PasswordLibrary();
let ut = await plib.getUserTokenInfo(db, atoken.identifier);
if (!ut.userid) {
return Promise.reject(new VerifyError_1.VerifyError("Token not found", will_api_1.HTTP.UNAUTHORIZED, -16003));
}
return Promise.resolve(ut);
}
catch (ex) {
this.logger.error(this.constructor.name, ex);
return Promise.reject(this.getDBError(ex));
}
finally {
if (db)
db.close();
}
}
if (!EnvironmentVariable_1.ALWAYS_VALIDATE_TOKEN)
return Promise.resolve(undefined);
return Promise.reject(new VerifyError_1.VerifyError("Token undefined", will_api_1.HTTP.UNAUTHORIZED, -16002));
}
}
exports.AuthenticateHandler = AuthenticateHandler;