@mvx/identity
Version:
identity is oidc for mvc, type-mvc is base on koa. Decorator, Ioc, AOP mvc framework on server.
96 lines (94 loc) • 4.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SuccessResult = void 0;
var tslib_1 = require("tslib");
var ValidationResult_1 = require("./ValidationResult");
/**
* Authenticate `user`, with optional `info`.
*
* Strategies should return this action to successfully authenticate a
* user. `user` should be an object supplied by the application after it
* has been given an opportunity to verify credentials. `info` is an
* optional argument containing additional user information. This is
* useful for third-party authentication strategies to pass profile
* details.
*
* @param {Object} user
* @param {Object} info
* @api public
*/
var SuccessResult = /** @class */ (function (_super) {
tslib_1.__extends(SuccessResult, _super);
function SuccessResult(options, user, info) {
var _this = _super.call(this) || this;
_this.options = options;
_this.user = user;
_this.info = info;
return _this;
}
SuccessResult.prototype.action = function (ctx, callback) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var user, info, msg, options, flash, type, _a, url;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
user = this.user;
info = this.info || {};
if (callback) {
return [2 /*return*/, callback(null, user, info)];
}
options = this.options;
if (options.successFlash) {
flash = options.successFlash;
if (typeof flash === 'string') {
flash = { type: 'success', message: flash };
}
flash.type = flash.type || 'success';
type = flash.type || info.type || 'success';
msg = flash.message || info.message || info;
if (typeof msg === 'string') {
ctx.session.flash = { type: type, message: msg };
}
}
if (options.successMessage) {
if (!(info.type in ctx.session.message)) {
ctx.session.message[info.type] = [];
}
ctx.session.message[info.type].push(info.message);
}
if (options.userProperty) {
ctx.state[options.userProperty] = user;
}
return [4 /*yield*/, ctx.login(user)];
case 1:
_b.sent();
if (!(options.authInfo !== false)) return [3 /*break*/, 3];
_a = ctx.state;
return [4 /*yield*/, ctx.passport.transformAuthInfo(info, ctx)];
case 2:
_a.authInfo = _b.sent();
_b.label = 3;
case 3:
if (options.successReturnToOrRedirect) {
url = options.successReturnToOrRedirect;
if (ctx.session && ctx.session.returnTo) {
url = ctx.session.returnTo;
delete ctx.session.returnTo;
}
return [2 /*return*/, ctx.redirect(url)];
}
if (options.successRedirect) {
return [2 /*return*/, ctx.redirect(options.successRedirect)];
}
return [2 /*return*/];
}
});
});
};
SuccessResult.ρAnn = function () {
return { "name": "SuccessResult" };
};
return SuccessResult;
}(ValidationResult_1.ValidationResult));
exports.SuccessResult = SuccessResult;
//# sourceMappingURL=../../sourcemaps/passports/results/SuccessResult.js.map