@financialforcedev/orizuru-auth
Version:
Salesforce authentication for Heroku Node applications.
51 lines • 8.04 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 environment_1 = require("../client/validator/environment");
/**
* Uses the [OAuth 2.0 Refresh Token Flow](https://help.salesforce.com/articleView?id=remoteaccess_oauth_refresh_token_flow.htm) to renew tokens issued by the web server or
* user-agent flows.
*
* @param env The auth environment parameters.
* @returns A function that requests an access token from the given refresh token.
*/
function createTokenGrantor(env) {
const validatedEnvironment = environment_1.validate(env);
return async function requestAccessToken(params, opts) {
const client = await cache_1.findOrCreateClient(validatedEnvironment);
// The RefreshTokenGrantorParams interface excludes the grant_type so that it
// doesn't have to be set by the caller. Make sure it is set here.
const internalParams = Object.assign({}, params);
internalParams.grantType = 'refresh_token';
const accessTokenResponse = await client.grant(internalParams, opts);
accessTokenResponse.refresh_token = params.refreshToken;
return accessTokenResponse;
};
}
exports.createTokenGrantor = createTokenGrantor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaFRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2luZGV4L2Zsb3cvcmVmcmVzaFRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHOztBQU9ILDJDQUFxRDtBQUNyRCxpRUFBMkQ7QUFFM0Q7Ozs7OztHQU1HO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsR0FBZ0I7SUFFbEQsTUFBTSxvQkFBb0IsR0FBRyxzQkFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTNDLE9BQU8sS0FBSyxVQUFVLGtCQUFrQixDQUFDLE1BQWlDLEVBQUUsSUFBbUI7UUFFOUYsTUFBTSxNQUFNLEdBQUcsTUFBTSwwQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTlELDZFQUE2RTtRQUM3RSxrRUFBa0U7UUFDbEUsTUFBTSxjQUFjLEdBQWdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlFLGNBQWMsQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDO1FBRTNDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQW9DLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0YsbUJBQW1CLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDeEQsT0FBTyxtQkFBbUIsQ0FBQztJQUU1QixDQUFDLENBQUM7QUFFSCxDQUFDO0FBbkJELGdEQW1CQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTksIEZpbmFuY2lhbEZvcmNlLmNvbSwgaW5jXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sXG4gKiAgIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAqXG4gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLFxuICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG4gKiAgICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBGaW5hbmNpYWxGb3JjZS5jb20sIGluYyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnNcbiAqICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXRcbiAqICAgICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiIEFORFxuICogIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVNcbiAqICBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTFxuICogIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLFxuICogIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EU1xuICogIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWVxuICogIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKVxuICogIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICovXG5cbi8qKlxuICogQG1vZHVsZSBmbG93L3JlZnJlc2hUb2tlblxuICovXG5cbmltcG9ydCB7IEFjY2Vzc1Rva2VuUmVzcG9uc2UsIEVudmlyb25tZW50LCBHcmFudE9wdGlvbnMsIFJlZnJlc2hBY2Nlc3NUb2tlbkdyYW50b3IsIFJlZnJlc2hHcmFudFBhcmFtcywgUmVmcmVzaFRva2VuR3JhbnRvclBhcmFtcyB9IGZyb20gJy4uJztcbmltcG9ydCB7IGZpbmRPckNyZWF0ZUNsaWVudCB9IGZyb20gJy4uL2NsaWVudC9jYWNoZSc7XG5pbXBvcnQgeyB2YWxpZGF0ZSB9IGZyb20gJy4uL2NsaWVudC92YWxpZGF0b3IvZW52aXJvbm1lbnQnO1xuXG4vKipcbiAqIFVzZXMgdGhlIFtPQXV0aCAyLjAgUmVmcmVzaCBUb2tlbiBGbG93XShodHRwczovL2hlbHAuc2FsZXNmb3JjZS5jb20vYXJ0aWNsZVZpZXc/aWQ9cmVtb3RlYWNjZXNzX29hdXRoX3JlZnJlc2hfdG9rZW5fZmxvdy5odG0pIHRvIHJlbmV3IHRva2VucyBpc3N1ZWQgYnkgdGhlIHdlYiBzZXJ2ZXIgb3JcbiAqIHVzZXItYWdlbnQgZmxvd3MuXG4gKlxuICogQHBhcmFtIGVudiBUaGUgYXV0aCBlbnZpcm9ubWVudCBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgQSBmdW5jdGlvbiB0aGF0IHJlcXVlc3RzIGFuIGFjY2VzcyB0b2tlbiBmcm9tIHRoZSBnaXZlbiByZWZyZXNoIHRva2VuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW5HcmFudG9yKGVudjogRW52aXJvbm1lbnQpOiBSZWZyZXNoQWNjZXNzVG9rZW5HcmFudG9yIHtcblxuXHRjb25zdCB2YWxpZGF0ZWRFbnZpcm9ubWVudCA9IHZhbGlkYXRlKGVudik7XG5cblx0cmV0dXJuIGFzeW5jIGZ1bmN0aW9uIHJlcXVlc3RBY2Nlc3NUb2tlbihwYXJhbXM6IFJlZnJlc2hUb2tlbkdyYW50b3JQYXJhbXMsIG9wdHM/OiBHcmFudE9wdGlvbnMpOiBQcm9taXNlPEFjY2Vzc1Rva2VuUmVzcG9uc2U+IHtcblxuXHRcdGNvbnN0IGNsaWVudCA9IGF3YWl0IGZpbmRPckNyZWF0ZUNsaWVudCh2YWxpZGF0ZWRFbnZpcm9ubWVudCk7XG5cblx0XHQvLyBUaGUgUmVmcmVzaFRva2VuR3JhbnRvclBhcmFtcyBpbnRlcmZhY2UgZXhjbHVkZXMgdGhlIGdyYW50X3R5cGUgc28gdGhhdCBpdFxuXHRcdC8vIGRvZXNuJ3QgaGF2ZSB0byBiZSBzZXQgYnkgdGhlIGNhbGxlci4gTWFrZSBzdXJlIGl0IGlzIHNldCBoZXJlLlxuXHRcdGNvbnN0IGludGVybmFsUGFyYW1zOiBQYXJ0aWFsPFJlZnJlc2hHcmFudFBhcmFtcz4gPSBPYmplY3QuYXNzaWduKHt9LCBwYXJhbXMpO1xuXHRcdGludGVybmFsUGFyYW1zLmdyYW50VHlwZSA9ICdyZWZyZXNoX3Rva2VuJztcblxuXHRcdGNvbnN0IGFjY2Vzc1Rva2VuUmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ3JhbnQoaW50ZXJuYWxQYXJhbXMgYXMgUmVmcmVzaEdyYW50UGFyYW1zLCBvcHRzKTtcblx0XHRhY2Nlc3NUb2tlblJlc3BvbnNlLnJlZnJlc2hfdG9rZW4gPSBwYXJhbXMucmVmcmVzaFRva2VuO1xuXHRcdHJldHVybiBhY2Nlc3NUb2tlblJlc3BvbnNlO1xuXG5cdH07XG5cbn1cbiJdfQ==