UNPKG

@arc-publishing/sdk-identity

Version:
85 lines 4.31 kB
import { __assign, __awaiter, __generator } from "tslib"; import { headers as defaultHeaders, logPrefix } from './constants'; import Identity from './identity'; import { isUserIdentity } from './userIdentity'; import JSONResponseHandler from '../serviceHelpers/JSONResponseHandler'; export function isOIDCToken(object) { return object.access_token !== undefined; } export default function signInWithOIDCPKCE(_a) { var client_id = _a.client_id, code_verifier = _a.code_verifier, redirect_uri = _a.redirect_uri, code = _a.code; return __awaiter(this, void 0, void 0, function () { var headers, formData, response, identityTokens, userIdentity, err_1; return __generator(this, function (_b) { switch (_b.label) { case 0: headers = __assign({}, defaultHeaders); if (!(Identity.userIdentity && Identity.userIdentity.accessToken && Identity.userIdentity.refreshToken)) return [3, 2]; return [4, Identity.heartbeat()]; case 1: _b.sent(); headers['Authorization'] = "Bearer ".concat(Identity.userIdentity.accessToken); _b.label = 2; case 2: formData = new FormData(); formData.append('grant_type', 'authorization_code'); formData.append('client_id', client_id); formData.append('code_verifier', code_verifier); formData.append('redirect_uri', redirect_uri); formData.append('code', code); _b.label = 3; case 3: _b.trys.push([3, 6, , 7]); return [4, fetch("".concat(Identity.apiOrigin, "/identity/public/v2/oidc/provider/token"), { method: 'POST', headers: new Headers(), body: formData }).then(JSONResponseHandler)]; case 4: response = _b.sent(); if (isOIDCToken(response)) { Identity.userIdentity = { accessToken: response.access_token, refreshToken: response.refresh_token, idToken: response.id_token, expiresIn: response.expires_in }; window.postMessage({ type: 'ARC_LOGIN_SUCCESS', grantType: 'OIDC' }, '*'); } else { throw response; } return [4, fetch("".concat(Identity.apiOrigin, "/identity/public/v1/auth/token"), { method: 'POST', headers: headers, body: JSON.stringify({ token: response.refresh_token, grantType: 'refresh-token' }) }).then(JSONResponseHandler)]; case 5: identityTokens = _b.sent(); if (isUserIdentity(identityTokens)) { userIdentity = __assign(__assign({}, Identity.userIdentity), { uuid: identityTokens.uuid, accessToken: identityTokens.accessToken, refreshToken: identityTokens.refreshToken || Identity.userIdentity.refreshToken }); Identity.userIdentity = userIdentity; return [2, Identity.userIdentity]; } else { if (identityTokens.code) { console.warn("".concat(logPrefix, " code:\"").concat(identityTokens.code, "\", message:\"").concat(identityTokens.message, "\"")); } Identity.clearSession(); throw identityTokens; } return [3, 7]; case 6: err_1 = _b.sent(); throw err_1; case 7: return [2]; } }); }); } //# sourceMappingURL=signInWithOIDCPKCE.js.map