will-core
Version:
core module
77 lines (76 loc) • 2.68 kB
JavaScript
;
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;