@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
JavaScript
;
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() {
}
SessionStorage.ρAnn = 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*/];
}
});
});
};
SessionMiddleware.ρAnn = 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