UNPKG

@mvx/identity

Version:

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

167 lines (165 loc) 8.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigurePassportBuildService = exports.PassportBuildService = void 0; var tslib_1 = require("tslib"); var ioc_1 = require("@tsdi/ioc"); var boot_1 = require("@tsdi/boot"); var components_1 = require("@tsdi/components"); var Strategy_1 = require("./Strategy"); var StrategySelectorHandle_1 = require("./StrategySelectorHandle"); var services_1 = require("../services"); /** * PassportBuildService * * @export * @abstract * @class PassportBuildService */ var PassportBuildService = /** @class */ (function () { function PassportBuildService() { } PassportBuildService.prototype.createStrategy = function (option) { return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.builder.resolveTemplate({ template: option, injector: this.injector })]; case 1: return [2 /*return*/, _a.sent()]; } }); }); }; PassportBuildServiceAnn = function () { return { "name": "PassportBuildService", "params": { "build": ["passport", "configuration"], "createStrategy": ["option"] } }; }; tslib_1.__decorate([ ioc_1.Inject(ioc_1.INJECTOR), tslib_1.__metadata("design:type", Object) ], PassportBuildService.prototype, "injector", void 0); tslib_1.__decorate([ ioc_1.Inject(), tslib_1.__metadata("design:type", components_1.ComponentBuilder) ], PassportBuildService.prototype, "builder", void 0); PassportBuildService = tslib_1.__decorate([ ioc_1.Abstract() ], PassportBuildService); return PassportBuildService; }()); exports.PassportBuildService = PassportBuildService; /** * register passport strategy in configuare. * * @export * @class ConfigurePassportBuildService * @extends {PassportBuildService} */ var ConfigurePassportBuildService = /** @class */ (function (_super) { tslib_1.__extends(ConfigurePassportBuildService, _super); function ConfigurePassportBuildService() { return _super !== null && _super.apply(this, arguments) || this; } ConfigurePassportBuildService.prototype.build = function (passport, configuration) { return tslib_1.__awaiter(this, void 0, void 0, function () { var actInj, register, _a, strategies, serializers, deserializers, authInfos; var _this = this; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: actInj = this.injector.getInstance(ioc_1.ActionInjectorToken); register = actInj.getInstance(boot_1.StartupDecoratorRegisterer).getRegisterer('TranslateTemplate'); if (!register.has(StrategySelectorHandle_1.StrategySelectorHandle)) { register.registerBefore(components_1.Component, components_1.ComponentSelectorHandle, StrategySelectorHandle_1.StrategySelectorHandle); } if (!configuration.passports) return [3 /*break*/, 3]; _a = configuration.passports, strategies = _a.strategies, serializers = _a.serializers, deserializers = _a.deserializers, authInfos = _a.authInfos; if (!strategies.length) return [3 /*break*/, 2]; return [4 /*yield*/, Promise.all(strategies.map(function (p) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var strategy; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.createStrategy(p)]; case 1: strategy = _a.sent(); if (strategy instanceof Strategy_1.Strategy) { passport.use(strategy); } return [2 /*return*/]; } }); }); }))]; case 1: _b.sent(); _b.label = 2; case 2: if (serializers && serializers.length) { serializers.forEach(function (ser) { if (ioc_1.isClass(ser)) { if (!_this.injector.has(ser)) { _this.injector.register(ser); } passport.serializeUser(function (user, ctx) { return _this.injector.resolve(ser).serializeUser(user, ctx); }); } else if (ioc_1.isFunction(ser)) { passport.serializeUser(ser); } }); } else { this.injector.getServices(services_1.SerializeUser) .forEach(function (ser) { passport.serializeUser(function (user, ctx) { return ser.serializeUser(user, ctx); }); }); } if (deserializers && deserializers.length) { deserializers.forEach(function (desr) { if (ioc_1.isClass(desr)) { if (!_this.injector.has(desr)) { _this.injector.register(desr); } passport.deserializeUser(function (obj, ctx) { return _this.injector.resolve(desr).deserializeUser(obj, ctx); }); } else if (ioc_1.isFunction(desr)) { passport.deserializeUser(desr); } }); } else { this.injector.getServices(services_1.DeserializeUser) .forEach(function (desr) { passport.deserializeUser(function (obj, ctx) { return desr.deserializeUser(obj, ctx); }); }); } if (authInfos && authInfos.length) { authInfos.forEach(function (trans) { if (ioc_1.isClass(trans)) { if (!_this.injector.has(trans)) { _this.injector.register(trans); } passport.transformAuthInfo(function (info, ctx) { return _this.injector.resolve(trans).authInfo(info, ctx); }); } else if (ioc_1.isFunction(trans)) { passport.transformAuthInfo(trans); } }); } else { this.injector.getServices(services_1.TransformAuthInfo) .forEach(function (ser) { passport.transformAuthInfo(function (info, ctx) { return ser.authInfo(info, ctx); }); }); } _b.label = 3; case 3: return [2 /*return*/]; } }); }); }; ConfigurePassportBuildServiceAnn = function () { return { "name": "ConfigurePassportBuildService", "params": { "build": ["passport", "configuration"] } }; }; ConfigurePassportBuildService = tslib_1.__decorate([ ioc_1.Injectable() ], ConfigurePassportBuildService); return ConfigurePassportBuildService; }(PassportBuildService)); exports.ConfigurePassportBuildService = ConfigurePassportBuildService; //# sourceMappingURL=../sourcemaps/passports/PassportBuildService.js.map