UNPKG

will-core

Version:
48 lines (47 loc) 2.11 kB
"use strict"; 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;