UNPKG

@zeushq/nextjs-zidentity

Version:

Next.js SDK for signin in with Zeus Identity

63 lines 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var session_1 = require("../session"); var assert_1 = require("../utils/assert"); var errors_1 = require("../utils/errors"); /** * @ignore */ function profileHandler(getClient, getAccessToken, sessionCache) { var _this = this; return function (req, res, options) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var session, accessToken, client, userInfo, newSession, e_1; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 7, , 8]); (0, assert_1.assertReqRes)(req, res); if (!sessionCache.isAuthenticated(req, res)) { res.status(401).json({ error: 'not_authenticated', description: 'The user does not have an active session or is not authenticated' }); return [2 /*return*/]; } session = sessionCache.get(req, res); res.setHeader('Cache-Control', 'no-store'); if (!(options === null || options === void 0 ? void 0 : options.refetch)) return [3 /*break*/, 6]; return [4 /*yield*/, getAccessToken(req, res)]; case 1: accessToken = (_a.sent()).accessToken; if (!accessToken) { throw new Error('No access token available to refetch the profile'); } return [4 /*yield*/, getClient()]; case 2: client = _a.sent(); return [4 /*yield*/, client.userinfo(accessToken)]; case 3: userInfo = _a.sent(); newSession = (0, session_1.fromJson)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, session), { user: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, session.user), userInfo) })); if (!options.afterRefetch) return [3 /*break*/, 5]; return [4 /*yield*/, options.afterRefetch(req, res, newSession)]; case 4: newSession = _a.sent(); _a.label = 5; case 5: sessionCache.set(req, res, newSession); res.json(newSession.user); return [2 /*return*/]; case 6: res.json(session.user); return [3 /*break*/, 8]; case 7: e_1 = _a.sent(); throw new errors_1.HandlerError(e_1); case 8: return [2 /*return*/]; } }); }); }; } exports.default = profileHandler; //# sourceMappingURL=profile.js.map