@foal/social
Version:
Social authentication for FoalTS
40 lines (39 loc) • 1.47 kB
JavaScript
;
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;