UNPKG

@foal/social

Version:

Social authentication for FoalTS

40 lines (39 loc) 1.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GoogleProvider = exports.InvalidJWTError = void 0; // FoalTS const core_1 = require("@foal/core"); const abstract_provider_service_1 = require("./abstract-provider.service"); class InvalidJWTError extends Error { name = 'InvalidJWTError'; } exports.InvalidJWTError = InvalidJWTError; /** * Google social provider. * * @export * @class GoogleProvider * @extends {AbstractProvider<GoogleAuthParams, never>} */ class GoogleProvider extends abstract_provider_service_1.AbstractProvider { configPaths = { clientId: 'settings.social.google.clientId', clientSecret: 'settings.social.google.clientSecret', redirectUri: 'settings.social.google.redirectUri', }; authEndpoint = 'https://accounts.google.com/o/oauth2/v2/auth'; tokenEndpoint = 'https://oauth2.googleapis.com/token'; defaultScopes = ['openid', 'profile', 'email']; getUserInfoFromTokens(tokens) { try { const encodedPayload = tokens.id_token.split('.')[1]; const decodedPayload = Buffer.from((0, core_1.convertBase64urlToBase64)(encodedPayload), 'base64') .toString('utf8'); return JSON.parse(decodedPayload); } catch (error) { throw new InvalidJWTError(`The ID token returned by Google is not a valid JWT: ${error.message}.`); } } } exports.GoogleProvider = GoogleProvider;