UNPKG

@financialforcedev/orizuru-auth

Version:

Salesforce authentication for Heroku Node applications.

51 lines 8.04 kB
"use strict"; /* * 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==