@mvx/identity
Version:
identity is oidc for mvc, type-mvc is base on koa. Decorator, Ioc, AOP mvc framework on server.
78 lines (76 loc) • 2.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SuccessResult = void 0;
const 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
*/
class SuccessResult extends ValidationResult_1.ValidationResult {
constructor(options, user, info) {
super();
this.options = options;
this.user = user;
this.info = info;
}
async action(ctx, callback) {
let user = this.user;
let info = this.info || {};
if (callback) {
return callback(null, user, info);
}
let msg;
let options = this.options;
if (options.successFlash) {
var flash = options.successFlash;
if (typeof flash === 'string') {
flash = { type: 'success', message: flash };
}
flash.type = flash.type || 'success';
var 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;
}
await ctx.login(user);
if (options.authInfo !== false) {
ctx.state.authInfo = await ctx.passport.transformAuthInfo(info, ctx);
}
if (options.successReturnToOrRedirect) {
let url = options.successReturnToOrRedirect;
if (ctx.session && ctx.session.returnTo) {
url = ctx.session.returnTo;
delete ctx.session.returnTo;
}
return ctx.redirect(url);
}
if (options.successRedirect) {
return ctx.redirect(options.successRedirect);
}
}
static ρAnn() {
return { "name": "SuccessResult" };
}
}
exports.SuccessResult = SuccessResult;
//# sourceMappingURL=../../sourcemaps/passports/results/SuccessResult.js.map