UNPKG

@mvx/identity

Version:

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

131 lines (129 loc) 5.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigurePassportBuildService = exports.PassportBuildService = void 0; const tslib_1 = require("tslib"); const ioc_1 = require("@tsdi/ioc"); const boot_1 = require("@tsdi/boot"); const components_1 = require("@tsdi/components"); const Strategy_1 = require("./Strategy"); const StrategySelectorHandle_1 = require("./StrategySelectorHandle"); const services_1 = require("../services"); /** * PassportBuildService * * @export * @abstract * @class PassportBuildService */ let PassportBuildService = class PassportBuildService { async createStrategy(option) { return await this.builder.resolveTemplate({ template: option, injector: this.injector }); } static ρAnn() { 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); exports.PassportBuildService = PassportBuildService; /** * register passport strategy in configuare. * * @export * @class ConfigurePassportBuildService * @extends {PassportBuildService} */ let ConfigurePassportBuildService = class ConfigurePassportBuildService extends PassportBuildService { async build(passport, configuration) { let actInj = this.injector.getInstance(ioc_1.ActionInjectorToken); let 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) { let { strategies, serializers, deserializers, authInfos } = configuration.passports; if (strategies.length) { await Promise.all(strategies.map(async (p) => { let strategy = await this.createStrategy(p); if (strategy instanceof Strategy_1.Strategy) { passport.use(strategy); } })); } if (serializers && serializers.length) { serializers.forEach(ser => { if (ioc_1.isClass(ser)) { if (!this.injector.has(ser)) { this.injector.register(ser); } passport.serializeUser((user, ctx) => this.injector.resolve(ser).serializeUser(user, ctx)); } else if (ioc_1.isFunction(ser)) { passport.serializeUser(ser); } }); } else { this.injector.getServices(services_1.SerializeUser) .forEach(ser => { passport.serializeUser((user, ctx) => ser.serializeUser(user, ctx)); }); } if (deserializers && deserializers.length) { deserializers.forEach(desr => { if (ioc_1.isClass(desr)) { if (!this.injector.has(desr)) { this.injector.register(desr); } passport.deserializeUser((obj, ctx) => this.injector.resolve(desr).deserializeUser(obj, ctx)); } else if (ioc_1.isFunction(desr)) { passport.deserializeUser(desr); } }); } else { this.injector.getServices(services_1.DeserializeUser) .forEach(desr => { passport.deserializeUser((obj, ctx) => desr.deserializeUser(obj, ctx)); }); } if (authInfos && authInfos.length) { authInfos.forEach(trans => { if (ioc_1.isClass(trans)) { if (!this.injector.has(trans)) { this.injector.register(trans); } passport.transformAuthInfo((info, ctx) => this.injector.resolve(trans).authInfo(info, ctx)); } else if (ioc_1.isFunction(trans)) { passport.transformAuthInfo(trans); } }); } else { this.injector.getServices(services_1.TransformAuthInfo) .forEach(ser => { passport.transformAuthInfo((info, ctx) => ser.authInfo(info, ctx)); }); } } } static ρAnn() { return { "name": "ConfigurePassportBuildService", "params": { "build": ["passport", "configuration"] } }; } }; ConfigurePassportBuildService = tslib_1.__decorate([ ioc_1.Injectable() ], ConfigurePassportBuildService); exports.ConfigurePassportBuildService = ConfigurePassportBuildService; //# sourceMappingURL=../sourcemaps/passports/PassportBuildService.js.map