UNPKG

@mvx/identity

Version:

identity is oidc for mvc, type-mvc is base on koa. Decorator, Ioc, AOP mvc framework on server.

122 lines (120 loc) 5.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SessionMiddleware = exports.SessionStorage = void 0; var tslib_1 = require("tslib"); var ioc_1 = require("@tsdi/ioc"); var mvc_1 = require("@mvx/mvc"); var session = require('koa-session'); /** * Session storage. */ var SessionStorage = /** @class */ (function () { function SessionStorage() { } SessionStorageAnn = function () { return { "name": "SessionStorage", "params": { "get": ["key", "maxAge", "data"], "set": ["key", "sess", "maxAge", "data"], "destroy": ["key"] } }; }; SessionStorage = tslib_1.__decorate([ ioc_1.Abstract(), tslib_1.__metadata("design:paramtypes", []) ], SessionStorage); return SessionStorage; }()); exports.SessionStorage = SessionStorage; /** * session middleware. * * @export * @class SessionMiddleware * @extends {MvcMiddleware} */ var SessionMiddleware = /** @class */ (function (_super) { tslib_1.__extends(SessionMiddleware, _super); function SessionMiddleware() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.hasInit = false; return _this; } SessionMiddleware.prototype.getMiddleware = function (context, koa) { if (!this.hasInit && !this.middleware) { var sessCfg = context.getConfiguration().session || {}; this.hasInit = true; this.sessCfg = Object.assign(sessCfg, { key: 'typemvc:sess', /** (number || 'session') maxAge in ms (default is 1 days) */ /** 'session' will result in a cookie that expires when session/browser is closed */ /** Warning: If a session cookie is stolen, this cookie will never expire */ maxAge: 36000000, overwrite: true, httpOnly: true, signed: true, rolling: false /** (boolean) Force a session identifier cookie to be set on every response. The expiration is reset to the original maxAge, resetting the expiration countdown. default is false **/ }, sessCfg); if (!this.sessCfg.store) { var storage = context.getContainer().getService(SessionStorage); if (storage) { this.sessCfg.store = storage; } } this.middleware = session(this.sessCfg, koa); } return this.middleware; }; SessionMiddleware.prototype.execute = function (ctx, next) { var _a; return tslib_1.__awaiter(this, void 0, void 0, function () { var middleware, error, err_1; var _this = this; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: middleware = this.getMiddleware(ctx.mvcContext, ctx.app); _b.label = 1; case 1: _b.trys.push([1, 3, , 4]); return [4 /*yield*/, middleware(ctx, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { var err_2; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); return [4 /*yield*/, next()]; case 1: _a.sent(); return [3 /*break*/, 3]; case 2: err_2 = _a.sent(); error = err_2; throw err_2; case 3: return [2 /*return*/]; } }); }); })]; case 2: return [2 /*return*/, _b.sent()]; case 3: err_1 = _b.sent(); if (err_1 === error) { throw err_1; } else { (_a = ctx.mvcContext.getLogManager().getLogger()) === null || _a === void 0 ? void 0 : _a.error(err_1); } return [3 /*break*/, 4]; case 4: return [2 /*return*/]; } }); }); }; SessionMiddlewareAnn = function () { return { "name": "SessionMiddleware", "params": { "getMiddleware": ["context", "koa"], "execute": ["ctx", "next"] } }; }; SessionMiddleware = tslib_1.__decorate([ mvc_1.Middleware({ name: mvc_1.MiddlewareTypes.Session, before: mvc_1.MiddlewareTypes.Cors }) ], SessionMiddleware); return SessionMiddleware; }(mvc_1.MvcMiddleware)); exports.SessionMiddleware = SessionMiddleware; //# sourceMappingURL=../sourcemaps/middlewares/SessionMiddleware.js.map