@nestjs/passport
Version:
Nest - modern, fast, powerful node.js web framework (@passport)
41 lines (40 loc) • 1.91 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const passport = require("passport");
const common_1 = require("@nestjs/common");
const options_1 = require("./options");
function AuthGuard(type, options = options_1.defaultOptions) {
options = Object.assign({}, options_1.defaultOptions, options);
const guard = common_1.mixin(class {
canActivate(context) {
return __awaiter(this, void 0, void 0, function* () {
const httpContext = context.switchToHttp();
const [request, response] = [
httpContext.getRequest(),
httpContext.getResponse()
];
const passportFn = createPassportContext(request, response);
request[options.property || options_1.defaultOptions.property] = yield passportFn(type, options);
return true;
});
}
});
return guard;
}
exports.AuthGuard = AuthGuard;
const createPassportContext = (request, response) => (type, options) => new Promise((resolve, reject) => passport.authenticate(type, options, (err, user, info) => {
try {
return resolve(options.callback(err, user, info));
}
catch (err) {
reject(err);
}
})(request, response, resolve));
;