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