UNPKG

@mvx/identity

Version:

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

97 lines (95 loc) 3.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SessionMiddleware = exports.SessionStorage = void 0; const tslib_1 = require("tslib"); const ioc_1 = require("@tsdi/ioc"); const mvc_1 = require("@mvx/mvc"); const session = require('koa-session'); /** * Session storage. */ let SessionStorage = class SessionStorage { constructor() { } static ρAnn() { 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); exports.SessionStorage = SessionStorage; /** * session middleware. * * @export * @class SessionMiddleware * @extends {MvcMiddleware} */ let SessionMiddleware = class SessionMiddleware extends mvc_1.MvcMiddleware { constructor() { super(...arguments); this.hasInit = false; } getMiddleware(context, koa) { if (!this.hasInit && !this.middleware) { let 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) { let storage = context.getContainer().getService(SessionStorage); if (storage) { this.sessCfg.store = storage; } } this.middleware = session(this.sessCfg, koa); } return this.middleware; } async execute(ctx, next) { var _a; let middleware = this.getMiddleware(ctx.mvcContext, ctx.app); let error; try { return await middleware(ctx, async () => { try { await next(); } catch (err) { error = err; throw err; } }); } catch (err) { if (err === error) { throw err; } else { (_a = ctx.mvcContext.getLogManager().getLogger()) === null || _a === void 0 ? void 0 : _a.error(err); } } } static ρAnn() { 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); exports.SessionMiddleware = SessionMiddleware; //# sourceMappingURL=../sourcemaps/middlewares/SessionMiddleware.js.map