UNPKG

@zeushq/nextjs-zidentity

Version:

Next.js SDK for signin in with Zeus Identity

61 lines 3.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var url_join_1 = (0, tslib_1.__importDefault)(require("url-join")); var http_errors_1 = require("http-errors"); var get_login_state_1 = require("../hooks/get-login-state"); function getRedirectUri(config) { return (0, url_join_1.default)(config.baseURL, config.routes.callback); } function callbackHandlerFactory(config, getClient, sessionCache, transientCookieHandler) { var _this = this; return function (req, res, options) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var client, redirectUri, expectedState, tokenSet, callbackParams, max_age, code_verifier, err_1, openidState, session; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, getClient()]; case 1: client = _a.sent(); redirectUri = (options === null || options === void 0 ? void 0 : options.redirectUri) || getRedirectUri(config); _a.label = 2; case 2: _a.trys.push([2, 4, , 5]); callbackParams = client.callbackParams(req); expectedState = transientCookieHandler.read('state', req, res); max_age = transientCookieHandler.read('max_age', req, res); code_verifier = transientCookieHandler.read('code_verifier', req, res); return [4 /*yield*/, client.callback(redirectUri, callbackParams, { max_age: max_age !== undefined ? +max_age : undefined, code_verifier: code_verifier, // nonce, state: expectedState })]; case 3: // const nonce = transientCookieHandler.read('nonce', req, res); // console.log(callbackParams); tokenSet = _a.sent(); return [3 /*break*/, 5]; case 4: err_1 = _a.sent(); throw new http_errors_1.BadRequest(err_1.message); case 5: openidState = (0, get_login_state_1.decodeState)(expectedState); session = sessionCache.fromTokenSet(tokenSet); if (!(options === null || options === void 0 ? void 0 : options.afterCallback)) return [3 /*break*/, 7]; return [4 /*yield*/, options.afterCallback(req, res, session, openidState)]; case 6: session = _a.sent(); _a.label = 7; case 7: sessionCache.create(req, res, session); res.writeHead(302, { Location: openidState.returnTo || config.baseURL }); res.end(); return [2 /*return*/]; } }); }); }; } exports.default = callbackHandlerFactory; //# sourceMappingURL=callback.js.map