@financialforcedev/orizuru-auth
Version:
Salesforce authentication for Heroku Node applications.
52 lines • 7.28 kB
JavaScript
;
/*
* Copyright (c) 2019, FinancialForce.com, inc
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* - Neither the name of the FinancialForce.com, inc nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
Object.defineProperty(exports, "__esModule", { value: true });
const cache_1 = require("../client/cache");
const openid_1 = require("../client/openid");
const environment_1 = require("../client/validator/environment");
/**
* Returns a function that requests the user information for a given access token.
*
* @param env The auth environment parameters.
*/
function createUserInfoRequester(env) {
const validatedEnvironment = environment_1.validate(env);
return async function requestUserInfo(accessToken, opts) {
try {
const client = await cache_1.findOrCreateClient(validatedEnvironment);
if (!(client instanceof openid_1.OpenIdClient)) {
throw new Error('This function must be used with a OpenID client.');
}
return await client.userinfo(accessToken, opts);
}
catch (error) {
throw new Error(`Failed to retrieve user information. Caused by: ${error.message}`);
}
};
}
exports.createUserInfoRequester = createUserInfoRequester;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcmluZm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5kZXgvdXNlckluZm8vdXNlcmluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7O0FBT0gsMkNBQXFEO0FBQ3JELDZDQUFnRDtBQUNoRCxpRUFBMkQ7QUFFM0Q7Ozs7R0FJRztBQUNILFNBQWdCLHVCQUF1QixDQUFDLEdBQWdCO0lBRXZELE1BQU0sb0JBQW9CLEdBQUcsc0JBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUzQyxPQUFPLEtBQUssVUFBVSxlQUFlLENBQUMsV0FBbUIsRUFBRSxJQUFzQjtRQUVoRixJQUFJO1lBRUgsTUFBTSxNQUFNLEdBQUcsTUFBTSwwQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxDQUFDLE1BQU0sWUFBWSxxQkFBWSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQzthQUNwRTtZQUVELE9BQU8sTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUVoRDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDcEY7SUFFRixDQUFDLENBQUM7QUFFSCxDQUFDO0FBckJELDBEQXFCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTksIEZpbmFuY2lhbEZvcmNlLmNvbSwgaW5jXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sXG4gKiAgIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gKiAgICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBGaW5hbmNpYWxGb3JjZS5jb20sIGluYyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnNcbiAqICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXRcbiAqICAgICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiIEFORFxuICogIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVNcbiAqICBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTFxuICogIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLFxuICogIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICogIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWVxuICogIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKVxuICogIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbi8qKlxuICogQG1vZHVsZSB1c2VySW5mby91c2VyaW5mb1xuICovXG5cbmltcG9ydCB7IEVudmlyb25tZW50LCBVc2VySW5mb09wdGlvbnMsIFVzZXJJbmZvUmVxdWVzdGVyIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHsgZmluZE9yQ3JlYXRlQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50L2NhY2hlJztcbmltcG9ydCB7IE9wZW5JZENsaWVudCB9IGZyb20gJy4uL2NsaWVudC9vcGVuaWQnO1xuaW1wb3J0IHsgdmFsaWRhdGUgfSBmcm9tICcuLi9jbGllbnQvdmFsaWRhdG9yL2Vudmlyb25tZW50JztcblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCByZXF1ZXN0cyB0aGUgdXNlciBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiBhY2Nlc3MgdG9rZW4uXG4gKlxuICogQHBhcmFtIGVudiBUaGUgYXV0aCBlbnZpcm9ubWVudCBwYXJhbWV0ZXJzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXNlckluZm9SZXF1ZXN0ZXIoZW52OiBFbnZpcm9ubWVudCk6IFVzZXJJbmZvUmVxdWVzdGVyIHtcblxuXHRjb25zdCB2YWxpZGF0ZWRFbnZpcm9ubWVudCA9IHZhbGlkYXRlKGVudik7XG5cblx0cmV0dXJuIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3RVc2VySW5mbyhhY2Nlc3NUb2tlbjogc3RyaW5nLCBvcHRzPzogVXNlckluZm9PcHRpb25zKSB7XG5cblx0XHR0cnkge1xuXG5cdFx0XHRjb25zdCBjbGllbnQgPSBhd2FpdCBmaW5kT3JDcmVhdGVDbGllbnQodmFsaWRhdGVkRW52aXJvbm1lbnQpO1xuXHRcdFx0aWYgKCEoY2xpZW50IGluc3RhbmNlb2YgT3BlbklkQ2xpZW50KSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIHdpdGggYSBPcGVuSUQgY2xpZW50LicpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gYXdhaXQgY2xpZW50LnVzZXJpbmZvKGFjY2Vzc1Rva2VuLCBvcHRzKTtcblxuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSB1c2VyIGluZm9ybWF0aW9uLiBDYXVzZWQgYnk6ICR7ZXJyb3IubWVzc2FnZX1gKTtcblx0XHR9XG5cblx0fTtcblxufVxuIl19