UNPKG

will-core

Version:
77 lines (76 loc) 2.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AssureHandler = void 0; const AuthorizeHandler_1 = require("./AuthorizeHandler"); const AuthenticateHandler_1 = require("./AuthenticateHandler"); const EnvironmentVariable_1 = require("../utils/EnvironmentVariable"); class AssureHandler { static isExceptPath(req) { if (req && req.originalUrl && EnvironmentVariable_1.EXCEPT_AUTHORIZE_PATH) { let paths = EnvironmentVariable_1.EXCEPT_AUTHORIZE_PATH.split(","); for (let p of paths) { if (req.originalUrl.indexOf(p) >= 0) { return true; } } } return false; } static async doAuthorizeFilter(ctx, req) { if (this.isExceptPath(req)) { return Promise.resolve(ctx); } return this.doAuthorize(ctx); } static async doAuthenticateFilter(ctx, req) { if (this.isExceptPath(req)) { return Promise.resolve(ctx); } return this.doAuthenticate(ctx); } static async doAuthorize(ctx) { try { //check session is already exist? if (ctx.meta.user) { return Promise.resolve(ctx); } if (ctx.meta.session && ctx.meta.session.user) { ctx.meta.user = ctx.meta.session.user; return Promise.resolve(ctx); } let handler = new AuthorizeHandler_1.AuthorizeHandler(); let ut = await handler.authorize(ctx); if (ut) { if (ctx.meta.session) ctx.meta.session.user = ut; ctx.meta.user = ut; } return Promise.resolve(ctx); } catch (ex) { return Promise.reject(ex); } } static async doAuthenticate(ctx) { try { //check session is already exist? if (ctx.meta.user) { return Promise.resolve(ctx.meta.user); } if (ctx.meta.session && ctx.meta.session.user) { return Promise.resolve(ctx.meta.session.user); } let handler = new AuthenticateHandler_1.AuthenticateHandler(); let ut = await handler.authenticate(ctx); if (ut) { if (ctx.meta.session) ctx.meta.session.user = ut; } return Promise.resolve(ut); } catch (ex) { } return Promise.resolve(undefined); } } exports.AssureHandler = AssureHandler;