UNPKG

esiil

Version:

Minimalist library for EVE Online's ESI

85 lines 3.21 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports._reduceScope = exports._refreshTheToken = exports._processAuthToken = void 0; const Token_1 = require("./helpers/Token"); const jose_1 = require("jose"); const defaults_1 = __importDefault(require("./defaults")); async function _processAuthToken(authToken, ccpToken) { const payload = `grant_type=authorization_code&code=${authToken}`; return _handleTokens(await (0, Token_1._tokenExchange)(payload), ccpToken); } exports._processAuthToken = _processAuthToken; async function _refreshTheToken(refreshToken, ccpToken) { const payload = [ `grant_type=refresh_token`, `refresh_token=${refreshToken}`, `client_id=${defaults_1.default.clientID}` ].join('&'); return _handleTokens(await (0, Token_1._tokenRefresh)(payload), ccpToken); } exports._refreshTheToken = _refreshTheToken; async function _reduceScope(refreshToken, ccpToken, updatedScopes) { const payload = [ `grant_type=refresh_token`, `refresh_token=${refreshToken}`, `client_id=${defaults_1.default.clientID}`, `scope=${encodeURIComponent(updatedScopes.join(' '))}` ].join('&'); return _handleTokens(await (0, Token_1._tokenRefresh)(payload), ccpToken); } exports._reduceScope = _reduceScope; async function _handleTokens(rawSessionToken, ccpToken) { try { if (typeof rawSessionToken.body === 'string') { throw new Error(`Not a valid object: ${rawSessionToken.body}`); } if ("access_token" in rawSessionToken.body) { const verification = await _doVerify(ccpToken, rawSessionToken.body.access_token); if (verification.iss == 'login.eveonline.com') { const safeCharId = Number(verification.sub?.split(':')[2]); if (safeCharId && typeof verification.owner === 'string') { const completeTokenData = { character: safeCharId, owner: verification.owner, ...rawSessionToken.body }; return completeTokenData; } else { throw new Error("JWTPayload verification.sub.split(':')[2] not a valid number"); } } else { throw new Error(`Could not verify JWT`); } } } catch (err) { console.log('err'); console.log(err); } return { access_token: '', expires_in: 0, token_type: '', refresh_token: '', character: 0, owner: '' }; } async function _doVerify(ccpToken, accessToken) { const ccpJwk = await (0, jose_1.importJWK)(_ccpToJwk(ccpToken), 'RS256'); const { payload, protectedHeader } = await (0, jose_1.jwtVerify)(accessToken, ccpJwk, {}); return payload; } function _ccpToJwk(token) { return { kty: token.kty, e: token.e, n: token.n }; } //# sourceMappingURL=indexHelper.js.map