@esri/arcgis-rest-auth
Advanced tools
Comparing version 3.2.1 to 3.3.0
@@ -213,10 +213,11 @@ /// <reference types="node" /> | ||
* Begins a new browser-based OAuth 2.0 sign in. If `options.popup` is `true` the | ||
* authentication window will open in a new tab/window otherwise the user will | ||
* be redirected to the authorization page in their current tab/window. | ||
* authentication window will open in a new tab/window and the function will return | ||
* Promise<UserSession>. Otherwise, the user will be redirected to the | ||
* authorization page in their current tab/window and the function will return `undefined`. | ||
* | ||
* @browserOnly | ||
*/ | ||
static beginOAuth2(options: IOAuth2Options, win?: any): Promise<UserSession>; | ||
static beginOAuth2(options: IOAuth2Options, win?: any): Promise<UserSession> | undefined; | ||
/** | ||
* Completes a browser-based OAuth 2.0 in. If `options.popup` is `true` the user | ||
* Completes a browser-based OAuth 2.0 sign in. If `options.popup` is `true` the user | ||
* will be returned to the previous window. Otherwise a new `UserSession` | ||
@@ -313,3 +314,3 @@ * will be returned. You must pass the same values for `options.popup` and | ||
/** | ||
* Duration of new OAuth 2.0 refresh token validity. | ||
* Duration of new OAuth 2.0 refresh token validity (in minutes). | ||
*/ | ||
@@ -316,0 +317,0 @@ readonly refreshTokenTTL: number; |
@@ -56,3 +56,3 @@ /* Copyright (c) 2017-2019 Environmental Systems Research Institute, Inc. | ||
this.redirectUri = options.redirectUri; | ||
this.refreshTokenTTL = options.refreshTokenTTL || 1440; | ||
this.refreshTokenTTL = options.refreshTokenTTL || 20160; | ||
this.server = options.server; | ||
@@ -127,4 +127,5 @@ this.federatedServers = {}; | ||
* Begins a new browser-based OAuth 2.0 sign in. If `options.popup` is `true` the | ||
* authentication window will open in a new tab/window otherwise the user will | ||
* be redirected to the authorization page in their current tab/window. | ||
* authentication window will open in a new tab/window and the function will return | ||
* Promise<UserSession>. Otherwise, the user will be redirected to the | ||
* authorization page in their current tab/window and the function will return `undefined`. | ||
* | ||
@@ -186,3 +187,3 @@ * @browserOnly | ||
/** | ||
* Completes a browser-based OAuth 2.0 in. If `options.popup` is `true` the user | ||
* Completes a browser-based OAuth 2.0 sign in. If `options.popup` is `true` the user | ||
* will be returned to the previous window. Otherwise a new `UserSession` | ||
@@ -335,3 +336,3 @@ * will be returned. You must pass the same values for `options.popup` and | ||
portal: "https://www.arcgis.com/sharing/rest", | ||
refreshTokenTTL: 1440, | ||
refreshTokenTTL: 20160, | ||
}, options), portal = _a.portal, clientId = _a.clientId, redirectUri = _a.redirectUri, refreshTokenTTL = _a.refreshTokenTTL; | ||
@@ -353,3 +354,3 @@ return fetchToken(portal + "/oauth2/token", { | ||
refreshTokenTTL: refreshTokenTTL, | ||
refreshTokenExpires: new Date(Date.now() + (refreshTokenTTL - 1) * 1000), | ||
refreshTokenExpires: new Date(Date.now() + (refreshTokenTTL - 1) * 60 * 1000), | ||
token: response.token, | ||
@@ -356,0 +357,0 @@ tokenExpires: response.expires, |
@@ -59,3 +59,3 @@ "use strict"; | ||
this.redirectUri = options.redirectUri; | ||
this.refreshTokenTTL = options.refreshTokenTTL || 1440; | ||
this.refreshTokenTTL = options.refreshTokenTTL || 20160; | ||
this.server = options.server; | ||
@@ -130,4 +130,5 @@ this.federatedServers = {}; | ||
* Begins a new browser-based OAuth 2.0 sign in. If `options.popup` is `true` the | ||
* authentication window will open in a new tab/window otherwise the user will | ||
* be redirected to the authorization page in their current tab/window. | ||
* authentication window will open in a new tab/window and the function will return | ||
* Promise<UserSession>. Otherwise, the user will be redirected to the | ||
* authorization page in their current tab/window and the function will return `undefined`. | ||
* | ||
@@ -189,3 +190,3 @@ * @browserOnly | ||
/** | ||
* Completes a browser-based OAuth 2.0 in. If `options.popup` is `true` the user | ||
* Completes a browser-based OAuth 2.0 sign in. If `options.popup` is `true` the user | ||
* will be returned to the previous window. Otherwise a new `UserSession` | ||
@@ -338,3 +339,3 @@ * will be returned. You must pass the same values for `options.popup` and | ||
portal: "https://www.arcgis.com/sharing/rest", | ||
refreshTokenTTL: 1440, | ||
refreshTokenTTL: 20160, | ||
}, options), portal = _a.portal, clientId = _a.clientId, redirectUri = _a.redirectUri, refreshTokenTTL = _a.refreshTokenTTL; | ||
@@ -356,3 +357,3 @@ return fetch_token_1.fetchToken(portal + "/oauth2/token", { | ||
refreshTokenTTL: refreshTokenTTL, | ||
refreshTokenExpires: new Date(Date.now() + (refreshTokenTTL - 1) * 1000), | ||
refreshTokenExpires: new Date(Date.now() + (refreshTokenTTL - 1) * 60 * 1000), | ||
token: response.token, | ||
@@ -359,0 +360,0 @@ tokenExpires: response.expires, |
/* @preserve | ||
* @esri/arcgis-rest-auth - v3.2.1 - Apache-2.0 | ||
* @esri/arcgis-rest-auth - v3.3.0 - Apache-2.0 | ||
* Copyright (c) 2017-2021 Esri, Inc. | ||
* Fri Jul 09 2021 09:39:08 GMT-0700 (Pacific Daylight Time) | ||
* Thu Aug 26 2021 11:55:05 GMT-0600 (Mountain Daylight Time) | ||
*/ | ||
@@ -304,3 +304,3 @@ (function (global, factory) { | ||
this.redirectUri = options.redirectUri; | ||
this.refreshTokenTTL = options.refreshTokenTTL || 1440; | ||
this.refreshTokenTTL = options.refreshTokenTTL || 20160; | ||
this.server = options.server; | ||
@@ -375,4 +375,5 @@ this.federatedServers = {}; | ||
* Begins a new browser-based OAuth 2.0 sign in. If `options.popup` is `true` the | ||
* authentication window will open in a new tab/window otherwise the user will | ||
* be redirected to the authorization page in their current tab/window. | ||
* authentication window will open in a new tab/window and the function will return | ||
* Promise<UserSession>. Otherwise, the user will be redirected to the | ||
* authorization page in their current tab/window and the function will return `undefined`. | ||
* | ||
@@ -434,3 +435,3 @@ * @browserOnly | ||
/** | ||
* Completes a browser-based OAuth 2.0 in. If `options.popup` is `true` the user | ||
* Completes a browser-based OAuth 2.0 sign in. If `options.popup` is `true` the user | ||
* will be returned to the previous window. Otherwise a new `UserSession` | ||
@@ -583,3 +584,3 @@ * will be returned. You must pass the same values for `options.popup` and | ||
portal: "https://www.arcgis.com/sharing/rest", | ||
refreshTokenTTL: 1440, | ||
refreshTokenTTL: 20160, | ||
}, options), portal = _a.portal, clientId = _a.clientId, redirectUri = _a.redirectUri, refreshTokenTTL = _a.refreshTokenTTL; | ||
@@ -601,3 +602,3 @@ return fetchToken(portal + "/oauth2/token", { | ||
refreshTokenTTL: refreshTokenTTL, | ||
refreshTokenExpires: new Date(Date.now() + (refreshTokenTTL - 1) * 1000), | ||
refreshTokenExpires: new Date(Date.now() + (refreshTokenTTL - 1) * 60 * 1000), | ||
token: response.token, | ||
@@ -604,0 +605,0 @@ tokenExpires: response.expires, |
/* @preserve | ||
* @esri/arcgis-rest-auth - v3.2.1 - Apache-2.0 | ||
* @esri/arcgis-rest-auth - v3.3.0 - Apache-2.0 | ||
* Copyright (c) 2017-2021 Esri, Inc. | ||
* Fri Jul 09 2021 09:39:11 GMT-0700 (Pacific Daylight Time) | ||
* Thu Aug 26 2021 11:55:07 GMT-0600 (Mountain Daylight Time) | ||
*/ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@esri/arcgis-rest-request")):"function"==typeof define&&define.amd?define(["exports","@esri/arcgis-rest-request"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).arcgisRest=e.arcgisRest||{},e.arcgisRest)}(this,function(e,f){"use strict";var k=function(){return(k=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var s in t=arguments[r])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}).apply(this,arguments)};function i(e,t){return t.rawResponse=!1,f.request(e,t).then(function(e){var t={token:e.access_token,username:e.username,expires:new Date(Date.now()+(1e3*e.expires_in-1e3)),ssl:!0===e.ssl};return e.refresh_token&&(t.refreshToken=e.refresh_token),t})}var t=(r.prototype.getToken=function(e,t){return this.token&&this.expires&&this.expires.getTime()>Date.now()?Promise.resolve(this.token):this._pendingTokenRequest||(this._pendingTokenRequest=this.refreshToken(t),this._pendingTokenRequest)},r.prototype.refreshToken=function(e){var t=this,e=k({params:{client_id:this.clientId,client_secret:this.clientSecret,grant_type:"client_credentials",expiration:this.duration}},e);return i(this.portal+"/oauth2/token/",e).then(function(e){return t._pendingTokenRequest=null,t.token=e.token,t.expires=e.expires,e.token})},r.prototype.refreshSession=function(){var e=this;return this.refreshToken().then(function(){return e})},r);function r(e){this.clientId=e.clientId,this.clientSecret=e.clientSecret,this.token=e.token,this.expires=e.expires,this.portal=e.portal||"https://www.arcgis.com/sharing/rest",this.duration=e.duration||7200}var n=(s.prototype.getToken=function(e){return Promise.resolve(this.key)},s);function s(e){this.key=e.key}function o(e,t){return"undefined"!=typeof window&&window.location&&window.location.host?t.params.referer=window.location.host:t.params.referer=f.NODEJS_DEFAULT_REFERER_HEADER,f.request(e,t)}var a=/^https?:\/\/(\S+)\.arcgis\.com.+/;function h(e){return a.test(e)}function u(e){if(!a.test(e))return null;e=e.match(a)[1].split(".").pop();return e.includes("dev")?"dev":e.includes("qa")?"qa":"production"}function p(e,t){t=f.cleanUrl(function(e){if(!a.test(e))return e;switch(u(e)){case"dev":return"https://devext.arcgis.com/sharing/rest";case"qa":return"https://qaext.arcgis.com/sharing/rest";default:return"https://www.arcgis.com/sharing/rest"}}(t)).replace(/https?:\/\//,""),e=f.cleanUrl(e).replace(/https?:\/\//,"");return new RegExp(e,"i").test(t)}function c(e,t,r){void 0===r&&(r="https://www.arcgis.com/sharing/rest");r+="/oauth2/validateAppAccess",e={method:"POST",params:{f:"json",client_id:t,token:e}};return f.request(r,e)}var l=(Object.defineProperty(g.prototype,"token",{get:function(){return this._token},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"tokenExpires",{get:function(){return this._tokenExpires},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"refreshToken",{get:function(){return this._refreshToken},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"refreshTokenExpires",{get:function(){return this._refreshTokenExpires},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"trustedServers",{get:function(){return console.log("DEPRECATED: use federatedServers instead"),this.federatedServers},enumerable:!1,configurable:!0}),g.beginOAuth2=function(e,t){void 0===t&&(t=window),e.duration&&console.log("DEPRECATED: 'duration' is deprecated - use 'expiration' instead");var r=k({portal:"https://www.arcgis.com/sharing/rest",provider:"arcgis",expiration:20160,popup:!0,popupWindowFeatures:"height=400,width=600,menubar=no,location=yes,resizable=yes,scrollbars=yes,status=yes",state:e.clientId,locale:""},e),n=r.portal,s=r.provider,o=r.clientId,i=r.expiration,a=r.redirectUri,h=r.popup,u=r.popupWindowFeatures,p=r.state,c=r.locale,r=r.params,c="arcgis"===s?n+"/oauth2/authorize?client_id="+o+"&response_type=token&expiration="+(e.duration||i)+"&redirect_uri="+encodeURIComponent(a)+"&state="+p+"&locale="+c:n+"/oauth2/social/authorize?client_id="+o+"&socialLoginProviderName="+s+"&autoAccountCreateForSocial=true&response_type=token&expiration="+(e.duration||i)+"&redirect_uri="+encodeURIComponent(a)+"&state="+p+"&locale="+c;if(r&&(c=c+"&"+f.encodeQueryString(r)),h){var l,d=((l={promise:null,resolve:null,reject:null}).promise=new Promise(function(e,t){l.resolve=e,l.reject=t}),l);return t["__ESRI_REST_AUTH_HANDLER_"+o]=function(e,t){e?(e=JSON.parse(e),d.reject(new f.ArcGISAuthError(e.errorMessage,e.error))):t&&(t=JSON.parse(t),d.resolve(new g({clientId:o,portal:n,ssl:t.ssl,token:t.token,tokenExpires:new Date(t.expires),username:t.username})))},t.open(c,"oauth-window",u),d.promise}t.location.href=c},g.completeOAuth2=function(e,s){void 0===s&&(s=window);var t=k({portal:"https://www.arcgis.com/sharing/rest",popup:!0},e),o=t.portal,i=t.clientId,a=t.popup;function r(e,t){try{var r=void 0,n="__ESRI_REST_AUTH_HANDLER_"+i;if(a&&(s.opener?s.opener.parent&&s.opener.parent[n]?r=s.opener.parent[n]:s.opener&&s.opener[n]&&(r=s.opener[n]):s!==s.parent&&s.parent&&s.parent[n]&&(r=s.parent[n]),r))return r(e?JSON.stringify(e):void 0,JSON.stringify(t)),void s.close()}catch(e){throw new f.ArcGISAuthError('Unable to complete authentication. It\'s possible you specified popup based oAuth2 but no handler from "beginOAuth2()" present. This generally happens because the "popup" option differs between "beginOAuth2()" and "completeOAuth2()".')}if(e)throw new f.ArcGISAuthError(e.errorMessage,e.error);return new g({clientId:i,portal:o,ssl:t.ssl,token:t.token,tokenExpires:t.expires,username:t.username})}e=f.decodeQueryString(s.location.hash);if(!e.access_token){var n=void 0,h="Unknown error";return e.error&&(n=e.error,h=e.error_description),r({error:n,errorMessage:h})}t=e.access_token,n=new Date(Date.now()+1e3*parseInt(e.expires_in,10)-6e4),h=e.username;return r(void 0,{token:t,expires:n,ssl:"true"===e.ssl,username:h})},g.fromParent=function(e,n){var s;return!n&&window&&(n=window),new Promise(function(t,r){s=function(e){if(e.source===n.parent&&e.data)try{return t(g.parentMessageHandler(e))}catch(e){return r(e)}},n.addEventListener("message",s,!1),n.parent.postMessage({type:"arcgis:auth:requestCredential"},e)}).then(function(e){return n.removeEventListener("message",s,!1),e})},g.authorize=function(e,t){e.duration&&console.log("DEPRECATED: 'duration' is deprecated - use 'expiration' instead");var r=k({portal:"https://arcgis.com/sharing/rest",expiration:20160},e),n=r.portal,s=r.clientId,o=r.expiration,r=r.redirectUri;t.writeHead(301,{Location:n+"/oauth2/authorize?client_id="+s+"&expiration="+(e.duration||o)+"&response_type=code&redirect_uri="+encodeURIComponent(r)}),t.end()},g.exchangeAuthorizationCode=function(e,t){var e=k({portal:"https://www.arcgis.com/sharing/rest",refreshTokenTTL:1440},e),r=e.portal,n=e.clientId,s=e.redirectUri,o=e.refreshTokenTTL;return i(r+"/oauth2/token",{params:{grant_type:"authorization_code",client_id:n,redirect_uri:s,code:t}}).then(function(e){return new g({clientId:n,portal:r,ssl:e.ssl,redirectUri:s,refreshToken:e.refreshToken,refreshTokenTTL:o,refreshTokenExpires:new Date(Date.now()+1e3*(o-1)),token:e.token,tokenExpires:e.expires,username:e.username})})},g.deserialize=function(e){e=JSON.parse(e);return new g({clientId:e.clientId,refreshToken:e.refreshToken,refreshTokenExpires:new Date(e.refreshTokenExpires),username:e.username,password:e.password,token:e.token,tokenExpires:new Date(e.tokenExpires),portal:e.portal,ssl:e.ssl,tokenDuration:e.tokenDuration,redirectUri:e.redirectUri,refreshTokenTTL:e.refreshTokenTTL})},g.fromCredential=function(e){var t=void 0===e.ssl||e.ssl,r=e.expires||Date.now()+72e5;return new g({portal:e.server.includes("sharing/rest")?e.server:e.server+"/sharing/rest",ssl:t,token:e.token,username:e.userId,tokenExpires:new Date(r)})},g.parentMessageHandler=function(e){if("arcgis:auth:credential"===e.data.type)return g.fromCredential(e.data.credential);if("arcgis:auth:error"!==e.data.type)throw new Error("Unknown message type.");var t=new Error(e.data.error.message);throw t.name=e.data.error.name,t},g.prototype.toCredential=function(){return{expires:this.tokenExpires.getTime(),server:this.portal,ssl:this.ssl,token:this.token,userId:this.username}},g.prototype.getUser=function(e){var t=this;if(this._pendingUserRequest)return this._pendingUserRequest;if(this._user)return Promise.resolve(this._user);var r=this.portal+"/community/self",e=k(k({httpMethod:"GET",authentication:this},e),{rawResponse:!1});return this._pendingUserRequest=f.request(r,e).then(function(e){return t._user=e,t._pendingUserRequest=null,e}),this._pendingUserRequest},g.prototype.getPortal=function(e){var t=this;if(this._pendingPortalRequest)return this._pendingPortalRequest;if(this._portalInfo)return Promise.resolve(this._portalInfo);var r=this.portal+"/portals/self",e=k(k({httpMethod:"GET",authentication:this},e),{rawResponse:!1});return this._pendingPortalRequest=f.request(r,e).then(function(e){return t._portalInfo=e,t._pendingPortalRequest=null,e}),this._pendingPortalRequest},g.prototype.getUsername=function(){return this.username?Promise.resolve(this.username):this._user?Promise.resolve(this._user.username):this.getUser().then(function(e){return e.username})},g.prototype.getToken=function(e,t){return r=this.portal,n=e,s=h(r),o=h(n),r=u(r),n=u(n),s&&o&&r===n||new RegExp(this.portal,"i").test(e)?this.getFreshToken(t):this.getTokenForServer(e,t);var r,n,s,o},g.prototype.validateAppAccess=function(t){return this.getToken(this.portal).then(function(e){return c(e,t)})},g.prototype.toJSON=function(){return{clientId:this.clientId,refreshToken:this.refreshToken,refreshTokenExpires:this.refreshTokenExpires,username:this.username,password:this.password,token:this.token,tokenExpires:this.tokenExpires,portal:this.portal,ssl:this.ssl,tokenDuration:this.tokenDuration,redirectUri:this.redirectUri,refreshTokenTTL:this.refreshTokenTTL}},g.prototype.serialize=function(){return JSON.stringify(this)},g.prototype.enablePostMessageAuth=function(e,t){!t&&window&&(t=window),this._hostHandler=this.createPostMessageHandler(e),t.addEventListener("message",this._hostHandler,!1)},g.prototype.disablePostMessageAuth=function(e){!e&&window&&(e=window),e.removeEventListener("message",this._hostHandler,!1)},g.prototype.refreshSession=function(e){return this._user=null,this.username&&this.password?this.refreshWithUsernameAndPassword(e):this.clientId&&this.refreshToken?this.refreshWithRefreshToken():Promise.reject(new f.ArcGISAuthError("Unable to refresh token."))},g.prototype.getServerRootUrl=function(e){var t=f.cleanUrl(e).split(/\/rest(\/admin)?\/services(?:\/|#|\?|$)/)[0].match(/(https?:\/\/)(.+)/),r=(t[0],t[1]),e=t[2].split("/"),t=e[0],e=e.slice(1);return""+r+t.toLowerCase()+"/"+e.join("/")},g.prototype.getDomainCredentials=function(t){return this.trustedDomains&&this.trustedDomains.length&&this.trustedDomains.some(function(e){return t.startsWith(e)})?"include":"same-origin"},g.prototype.createPostMessageHandler=function(n){var s=this;return function(e){var t=-1<n.indexOf(e.origin),r="arcgis:auth:requestCredential"===e.data.type;t&&r&&((r=s.toCredential()).server=r.server.replace("/sharing/rest",""),e.source.postMessage({type:"arcgis:auth:credential",credential:r},e.origin))}},g.prototype.getTokenForServer=function(t,r){var n=this,s=this.getServerRootUrl(t),e=this.federatedServers[s];return e&&e.expires&&e.expires.getTime()>Date.now()?Promise.resolve(e.token):this._pendingTokenRequests[s]||(this._pendingTokenRequests[s]=this.fetchAuthorizedDomains().then(function(){return f.request(s+"/rest/info",{credentials:n.getDomainCredentials(t)}).then(function(e){if(e.owningSystemUrl){if(p(e.owningSystemUrl,n.portal))return f.request(e.owningSystemUrl+"/sharing/rest/info",r);throw new f.ArcGISAuthError(t+" is not federated with "+n.portal+".","NOT_FEDERATED")}if(e.authInfo&&void 0!==n.federatedServers[s])return Promise.resolve({authInfo:e.authInfo});throw new f.ArcGISAuthError(t+" is not federated with any portal and is not explicitly trusted.","NOT_FEDERATED")}).then(function(e){return e.authInfo.tokenServicesUrl}).then(function(e){return n.token&&n.tokenExpires.getTime()>Date.now()?o(e,{params:{token:n.token,serverUrl:t,expiration:n.tokenDuration,client:"referer"}}):o(e,{params:{username:n.username,password:n.password,expiration:n.tokenDuration,client:"referer"}}).then(function(e){return n._token=e.token,n._tokenExpires=new Date(e.expires),e})}).then(function(e){return n.federatedServers[s]={expires:new Date(e.expires),token:e.token},delete n._pendingTokenRequests[s],e.token})}),this._pendingTokenRequests[s])},g.prototype.getFreshToken=function(e){var t=this;return this.token&&!this.tokenExpires||this.token&&this.tokenExpires&&this.tokenExpires.getTime()>Date.now()?Promise.resolve(this.token):(this._pendingTokenRequests[this.portal]||(this._pendingTokenRequests[this.portal]=this.refreshSession(e).then(function(e){return t._pendingTokenRequests[t.portal]=null,e.token})),this._pendingTokenRequests[this.portal])},g.prototype.refreshWithUsernameAndPassword=function(e){var t=this,e=k({params:{username:this.username,password:this.password,expiration:this.tokenDuration}},e);return o(this.portal+"/generateToken",e).then(function(e){return t._token=e.token,t._tokenExpires=new Date(e.expires),t})},g.prototype.refreshWithRefreshToken=function(e){var t=this;if(this.refreshToken&&this.refreshTokenExpires&&this.refreshTokenExpires.getTime()<Date.now())return this.refreshRefreshToken(e);e=k({params:{client_id:this.clientId,refresh_token:this.refreshToken,grant_type:"refresh_token"}},e);return i(this.portal+"/oauth2/token",e).then(function(e){return t._token=e.token,t._tokenExpires=e.expires,t})},g.prototype.refreshRefreshToken=function(e){var t=this,e=k({params:{client_id:this.clientId,refresh_token:this.refreshToken,redirect_uri:this.redirectUri,grant_type:"exchange_refresh_token"}},e);return i(this.portal+"/oauth2/token",e).then(function(e){return t._token=e.token,t._tokenExpires=e.expires,t._refreshToken=e.refreshToken,t._refreshTokenExpires=new Date(Date.now()+60*(t.refreshTokenTTL-1)*1e3),t})},g.prototype.fetchAuthorizedDomains=function(){var t=this;return this.server||!this.portal?Promise.resolve(this):this.getPortal().then(function(e){return e.authorizedCrossOriginDomains&&e.authorizedCrossOriginDomains.length&&(t.trustedDomains=e.authorizedCrossOriginDomains.filter(function(e){return!e.startsWith("http://")}).map(function(e){return e.startsWith("https://")?e:"https://"+e})),t})},g);function g(e){var t;this.clientId=e.clientId,this._refreshToken=e.refreshToken,this._refreshTokenExpires=e.refreshTokenExpires,this.username=e.username,this.password=e.password,this._token=e.token,this._tokenExpires=e.tokenExpires,this.portal=e.portal?f.cleanUrl(e.portal):"https://www.arcgis.com/sharing/rest",this.ssl=e.ssl,this.provider=e.provider||"arcgis",this.tokenDuration=e.tokenDuration||20160,this.redirectUri=e.redirectUri,this.refreshTokenTTL=e.refreshTokenTTL||1440,this.server=e.server,this.federatedServers={},this.trustedDomains=[],e.server&&(t=this.getServerRootUrl(e.server),this.federatedServers[t]={token:e.token,expires:e.tokenExpires}),this._pendingTokenRequests={}}e.ApiKey=n,e.ApplicationSession=t,e.UserSession=l,e.exchangeToken=function(e,t,r){return void 0===r&&(r="https://www.arcgis.com/sharing/rest"),r+="/oauth2/exchangeToken",e={method:"POST",params:{f:"json",client_id:t,token:e}},f.request(r,e).then(function(e){return e.token})},e.fetchToken=i,e.generateToken=o,e.platformSelf=function(e,t,r){return void 0===r&&(r="https://www.arcgis.com/sharing/rest"),r+="/oauth2/platformSelf?f=json",t={method:"POST",headers:{"X-Esri-Auth-Client-Id":e,"X-Esri-Auth-Redirect-Uri":t},params:{f:"json"}},f.request(r,t)},e.validateAppAccess=c,Object.defineProperty(e,"__esModule",{value:!0})}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@esri/arcgis-rest-request")):"function"==typeof define&&define.amd?define(["exports","@esri/arcgis-rest-request"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).arcgisRest=e.arcgisRest||{},e.arcgisRest)}(this,function(e,f){"use strict";var k=function(){return(k=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var s in t=arguments[r])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}).apply(this,arguments)};function i(e,t){return t.rawResponse=!1,f.request(e,t).then(function(e){var t={token:e.access_token,username:e.username,expires:new Date(Date.now()+(1e3*e.expires_in-1e3)),ssl:!0===e.ssl};return e.refresh_token&&(t.refreshToken=e.refresh_token),t})}var t=(r.prototype.getToken=function(e,t){return this.token&&this.expires&&this.expires.getTime()>Date.now()?Promise.resolve(this.token):this._pendingTokenRequest||(this._pendingTokenRequest=this.refreshToken(t),this._pendingTokenRequest)},r.prototype.refreshToken=function(e){var t=this,e=k({params:{client_id:this.clientId,client_secret:this.clientSecret,grant_type:"client_credentials",expiration:this.duration}},e);return i(this.portal+"/oauth2/token/",e).then(function(e){return t._pendingTokenRequest=null,t.token=e.token,t.expires=e.expires,e.token})},r.prototype.refreshSession=function(){var e=this;return this.refreshToken().then(function(){return e})},r);function r(e){this.clientId=e.clientId,this.clientSecret=e.clientSecret,this.token=e.token,this.expires=e.expires,this.portal=e.portal||"https://www.arcgis.com/sharing/rest",this.duration=e.duration||7200}var n=(s.prototype.getToken=function(e){return Promise.resolve(this.key)},s);function s(e){this.key=e.key}function o(e,t){return"undefined"!=typeof window&&window.location&&window.location.host?t.params.referer=window.location.host:t.params.referer=f.NODEJS_DEFAULT_REFERER_HEADER,f.request(e,t)}var a=/^https?:\/\/(\S+)\.arcgis\.com.+/;function h(e){return a.test(e)}function u(e){if(!a.test(e))return null;e=e.match(a)[1].split(".").pop();return e.includes("dev")?"dev":e.includes("qa")?"qa":"production"}function p(e,t){t=f.cleanUrl(function(e){if(!a.test(e))return e;switch(u(e)){case"dev":return"https://devext.arcgis.com/sharing/rest";case"qa":return"https://qaext.arcgis.com/sharing/rest";default:return"https://www.arcgis.com/sharing/rest"}}(t)).replace(/https?:\/\//,""),e=f.cleanUrl(e).replace(/https?:\/\//,"");return new RegExp(e,"i").test(t)}function c(e,t,r){void 0===r&&(r="https://www.arcgis.com/sharing/rest");r+="/oauth2/validateAppAccess",e={method:"POST",params:{f:"json",client_id:t,token:e}};return f.request(r,e)}var l=(Object.defineProperty(g.prototype,"token",{get:function(){return this._token},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"tokenExpires",{get:function(){return this._tokenExpires},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"refreshToken",{get:function(){return this._refreshToken},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"refreshTokenExpires",{get:function(){return this._refreshTokenExpires},enumerable:!1,configurable:!0}),Object.defineProperty(g.prototype,"trustedServers",{get:function(){return console.log("DEPRECATED: use federatedServers instead"),this.federatedServers},enumerable:!1,configurable:!0}),g.beginOAuth2=function(e,t){void 0===t&&(t=window),e.duration&&console.log("DEPRECATED: 'duration' is deprecated - use 'expiration' instead");var r=k({portal:"https://www.arcgis.com/sharing/rest",provider:"arcgis",expiration:20160,popup:!0,popupWindowFeatures:"height=400,width=600,menubar=no,location=yes,resizable=yes,scrollbars=yes,status=yes",state:e.clientId,locale:""},e),n=r.portal,s=r.provider,o=r.clientId,i=r.expiration,a=r.redirectUri,h=r.popup,u=r.popupWindowFeatures,p=r.state,c=r.locale,r=r.params,c="arcgis"===s?n+"/oauth2/authorize?client_id="+o+"&response_type=token&expiration="+(e.duration||i)+"&redirect_uri="+encodeURIComponent(a)+"&state="+p+"&locale="+c:n+"/oauth2/social/authorize?client_id="+o+"&socialLoginProviderName="+s+"&autoAccountCreateForSocial=true&response_type=token&expiration="+(e.duration||i)+"&redirect_uri="+encodeURIComponent(a)+"&state="+p+"&locale="+c;if(r&&(c=c+"&"+f.encodeQueryString(r)),h){var l,d=((l={promise:null,resolve:null,reject:null}).promise=new Promise(function(e,t){l.resolve=e,l.reject=t}),l);return t["__ESRI_REST_AUTH_HANDLER_"+o]=function(e,t){e?(e=JSON.parse(e),d.reject(new f.ArcGISAuthError(e.errorMessage,e.error))):t&&(t=JSON.parse(t),d.resolve(new g({clientId:o,portal:n,ssl:t.ssl,token:t.token,tokenExpires:new Date(t.expires),username:t.username})))},t.open(c,"oauth-window",u),d.promise}t.location.href=c},g.completeOAuth2=function(e,s){void 0===s&&(s=window);var t=k({portal:"https://www.arcgis.com/sharing/rest",popup:!0},e),o=t.portal,i=t.clientId,a=t.popup;function r(e,t){try{var r=void 0,n="__ESRI_REST_AUTH_HANDLER_"+i;if(a&&(s.opener?s.opener.parent&&s.opener.parent[n]?r=s.opener.parent[n]:s.opener&&s.opener[n]&&(r=s.opener[n]):s!==s.parent&&s.parent&&s.parent[n]&&(r=s.parent[n]),r))return r(e?JSON.stringify(e):void 0,JSON.stringify(t)),void s.close()}catch(e){throw new f.ArcGISAuthError('Unable to complete authentication. It\'s possible you specified popup based oAuth2 but no handler from "beginOAuth2()" present. This generally happens because the "popup" option differs between "beginOAuth2()" and "completeOAuth2()".')}if(e)throw new f.ArcGISAuthError(e.errorMessage,e.error);return new g({clientId:i,portal:o,ssl:t.ssl,token:t.token,tokenExpires:t.expires,username:t.username})}e=f.decodeQueryString(s.location.hash);if(!e.access_token){var n=void 0,h="Unknown error";return e.error&&(n=e.error,h=e.error_description),r({error:n,errorMessage:h})}t=e.access_token,n=new Date(Date.now()+1e3*parseInt(e.expires_in,10)-6e4),h=e.username;return r(void 0,{token:t,expires:n,ssl:"true"===e.ssl,username:h})},g.fromParent=function(e,n){var s;return!n&&window&&(n=window),new Promise(function(t,r){s=function(e){if(e.source===n.parent&&e.data)try{return t(g.parentMessageHandler(e))}catch(e){return r(e)}},n.addEventListener("message",s,!1),n.parent.postMessage({type:"arcgis:auth:requestCredential"},e)}).then(function(e){return n.removeEventListener("message",s,!1),e})},g.authorize=function(e,t){e.duration&&console.log("DEPRECATED: 'duration' is deprecated - use 'expiration' instead");var r=k({portal:"https://arcgis.com/sharing/rest",expiration:20160},e),n=r.portal,s=r.clientId,o=r.expiration,r=r.redirectUri;t.writeHead(301,{Location:n+"/oauth2/authorize?client_id="+s+"&expiration="+(e.duration||o)+"&response_type=code&redirect_uri="+encodeURIComponent(r)}),t.end()},g.exchangeAuthorizationCode=function(e,t){var e=k({portal:"https://www.arcgis.com/sharing/rest",refreshTokenTTL:20160},e),r=e.portal,n=e.clientId,s=e.redirectUri,o=e.refreshTokenTTL;return i(r+"/oauth2/token",{params:{grant_type:"authorization_code",client_id:n,redirect_uri:s,code:t}}).then(function(e){return new g({clientId:n,portal:r,ssl:e.ssl,redirectUri:s,refreshToken:e.refreshToken,refreshTokenTTL:o,refreshTokenExpires:new Date(Date.now()+60*(o-1)*1e3),token:e.token,tokenExpires:e.expires,username:e.username})})},g.deserialize=function(e){e=JSON.parse(e);return new g({clientId:e.clientId,refreshToken:e.refreshToken,refreshTokenExpires:new Date(e.refreshTokenExpires),username:e.username,password:e.password,token:e.token,tokenExpires:new Date(e.tokenExpires),portal:e.portal,ssl:e.ssl,tokenDuration:e.tokenDuration,redirectUri:e.redirectUri,refreshTokenTTL:e.refreshTokenTTL})},g.fromCredential=function(e){var t=void 0===e.ssl||e.ssl,r=e.expires||Date.now()+72e5;return new g({portal:e.server.includes("sharing/rest")?e.server:e.server+"/sharing/rest",ssl:t,token:e.token,username:e.userId,tokenExpires:new Date(r)})},g.parentMessageHandler=function(e){if("arcgis:auth:credential"===e.data.type)return g.fromCredential(e.data.credential);if("arcgis:auth:error"!==e.data.type)throw new Error("Unknown message type.");var t=new Error(e.data.error.message);throw t.name=e.data.error.name,t},g.prototype.toCredential=function(){return{expires:this.tokenExpires.getTime(),server:this.portal,ssl:this.ssl,token:this.token,userId:this.username}},g.prototype.getUser=function(e){var t=this;if(this._pendingUserRequest)return this._pendingUserRequest;if(this._user)return Promise.resolve(this._user);var r=this.portal+"/community/self",e=k(k({httpMethod:"GET",authentication:this},e),{rawResponse:!1});return this._pendingUserRequest=f.request(r,e).then(function(e){return t._user=e,t._pendingUserRequest=null,e}),this._pendingUserRequest},g.prototype.getPortal=function(e){var t=this;if(this._pendingPortalRequest)return this._pendingPortalRequest;if(this._portalInfo)return Promise.resolve(this._portalInfo);var r=this.portal+"/portals/self",e=k(k({httpMethod:"GET",authentication:this},e),{rawResponse:!1});return this._pendingPortalRequest=f.request(r,e).then(function(e){return t._portalInfo=e,t._pendingPortalRequest=null,e}),this._pendingPortalRequest},g.prototype.getUsername=function(){return this.username?Promise.resolve(this.username):this._user?Promise.resolve(this._user.username):this.getUser().then(function(e){return e.username})},g.prototype.getToken=function(e,t){return r=this.portal,n=e,s=h(r),o=h(n),r=u(r),n=u(n),s&&o&&r===n||new RegExp(this.portal,"i").test(e)?this.getFreshToken(t):this.getTokenForServer(e,t);var r,n,s,o},g.prototype.validateAppAccess=function(t){return this.getToken(this.portal).then(function(e){return c(e,t)})},g.prototype.toJSON=function(){return{clientId:this.clientId,refreshToken:this.refreshToken,refreshTokenExpires:this.refreshTokenExpires,username:this.username,password:this.password,token:this.token,tokenExpires:this.tokenExpires,portal:this.portal,ssl:this.ssl,tokenDuration:this.tokenDuration,redirectUri:this.redirectUri,refreshTokenTTL:this.refreshTokenTTL}},g.prototype.serialize=function(){return JSON.stringify(this)},g.prototype.enablePostMessageAuth=function(e,t){!t&&window&&(t=window),this._hostHandler=this.createPostMessageHandler(e),t.addEventListener("message",this._hostHandler,!1)},g.prototype.disablePostMessageAuth=function(e){!e&&window&&(e=window),e.removeEventListener("message",this._hostHandler,!1)},g.prototype.refreshSession=function(e){return this._user=null,this.username&&this.password?this.refreshWithUsernameAndPassword(e):this.clientId&&this.refreshToken?this.refreshWithRefreshToken():Promise.reject(new f.ArcGISAuthError("Unable to refresh token."))},g.prototype.getServerRootUrl=function(e){var t=f.cleanUrl(e).split(/\/rest(\/admin)?\/services(?:\/|#|\?|$)/)[0].match(/(https?:\/\/)(.+)/),r=(t[0],t[1]),e=t[2].split("/"),t=e[0],e=e.slice(1);return""+r+t.toLowerCase()+"/"+e.join("/")},g.prototype.getDomainCredentials=function(t){return this.trustedDomains&&this.trustedDomains.length&&this.trustedDomains.some(function(e){return t.startsWith(e)})?"include":"same-origin"},g.prototype.createPostMessageHandler=function(n){var s=this;return function(e){var t=-1<n.indexOf(e.origin),r="arcgis:auth:requestCredential"===e.data.type;t&&r&&((r=s.toCredential()).server=r.server.replace("/sharing/rest",""),e.source.postMessage({type:"arcgis:auth:credential",credential:r},e.origin))}},g.prototype.getTokenForServer=function(t,r){var n=this,s=this.getServerRootUrl(t),e=this.federatedServers[s];return e&&e.expires&&e.expires.getTime()>Date.now()?Promise.resolve(e.token):this._pendingTokenRequests[s]||(this._pendingTokenRequests[s]=this.fetchAuthorizedDomains().then(function(){return f.request(s+"/rest/info",{credentials:n.getDomainCredentials(t)}).then(function(e){if(e.owningSystemUrl){if(p(e.owningSystemUrl,n.portal))return f.request(e.owningSystemUrl+"/sharing/rest/info",r);throw new f.ArcGISAuthError(t+" is not federated with "+n.portal+".","NOT_FEDERATED")}if(e.authInfo&&void 0!==n.federatedServers[s])return Promise.resolve({authInfo:e.authInfo});throw new f.ArcGISAuthError(t+" is not federated with any portal and is not explicitly trusted.","NOT_FEDERATED")}).then(function(e){return e.authInfo.tokenServicesUrl}).then(function(e){return n.token&&n.tokenExpires.getTime()>Date.now()?o(e,{params:{token:n.token,serverUrl:t,expiration:n.tokenDuration,client:"referer"}}):o(e,{params:{username:n.username,password:n.password,expiration:n.tokenDuration,client:"referer"}}).then(function(e){return n._token=e.token,n._tokenExpires=new Date(e.expires),e})}).then(function(e){return n.federatedServers[s]={expires:new Date(e.expires),token:e.token},delete n._pendingTokenRequests[s],e.token})}),this._pendingTokenRequests[s])},g.prototype.getFreshToken=function(e){var t=this;return this.token&&!this.tokenExpires||this.token&&this.tokenExpires&&this.tokenExpires.getTime()>Date.now()?Promise.resolve(this.token):(this._pendingTokenRequests[this.portal]||(this._pendingTokenRequests[this.portal]=this.refreshSession(e).then(function(e){return t._pendingTokenRequests[t.portal]=null,e.token})),this._pendingTokenRequests[this.portal])},g.prototype.refreshWithUsernameAndPassword=function(e){var t=this,e=k({params:{username:this.username,password:this.password,expiration:this.tokenDuration}},e);return o(this.portal+"/generateToken",e).then(function(e){return t._token=e.token,t._tokenExpires=new Date(e.expires),t})},g.prototype.refreshWithRefreshToken=function(e){var t=this;if(this.refreshToken&&this.refreshTokenExpires&&this.refreshTokenExpires.getTime()<Date.now())return this.refreshRefreshToken(e);e=k({params:{client_id:this.clientId,refresh_token:this.refreshToken,grant_type:"refresh_token"}},e);return i(this.portal+"/oauth2/token",e).then(function(e){return t._token=e.token,t._tokenExpires=e.expires,t})},g.prototype.refreshRefreshToken=function(e){var t=this,e=k({params:{client_id:this.clientId,refresh_token:this.refreshToken,redirect_uri:this.redirectUri,grant_type:"exchange_refresh_token"}},e);return i(this.portal+"/oauth2/token",e).then(function(e){return t._token=e.token,t._tokenExpires=e.expires,t._refreshToken=e.refreshToken,t._refreshTokenExpires=new Date(Date.now()+60*(t.refreshTokenTTL-1)*1e3),t})},g.prototype.fetchAuthorizedDomains=function(){var t=this;return this.server||!this.portal?Promise.resolve(this):this.getPortal().then(function(e){return e.authorizedCrossOriginDomains&&e.authorizedCrossOriginDomains.length&&(t.trustedDomains=e.authorizedCrossOriginDomains.filter(function(e){return!e.startsWith("http://")}).map(function(e){return e.startsWith("https://")?e:"https://"+e})),t})},g);function g(e){var t;this.clientId=e.clientId,this._refreshToken=e.refreshToken,this._refreshTokenExpires=e.refreshTokenExpires,this.username=e.username,this.password=e.password,this._token=e.token,this._tokenExpires=e.tokenExpires,this.portal=e.portal?f.cleanUrl(e.portal):"https://www.arcgis.com/sharing/rest",this.ssl=e.ssl,this.provider=e.provider||"arcgis",this.tokenDuration=e.tokenDuration||20160,this.redirectUri=e.redirectUri,this.refreshTokenTTL=e.refreshTokenTTL||20160,this.server=e.server,this.federatedServers={},this.trustedDomains=[],e.server&&(t=this.getServerRootUrl(e.server),this.federatedServers[t]={token:e.token,expires:e.tokenExpires}),this._pendingTokenRequests={}}e.ApiKey=n,e.ApplicationSession=t,e.UserSession=l,e.exchangeToken=function(e,t,r){return void 0===r&&(r="https://www.arcgis.com/sharing/rest"),r+="/oauth2/exchangeToken",e={method:"POST",params:{f:"json",client_id:t,token:e}},f.request(r,e).then(function(e){return e.token})},e.fetchToken=i,e.generateToken=o,e.platformSelf=function(e,t,r){return void 0===r&&(r="https://www.arcgis.com/sharing/rest"),r+="/oauth2/platformSelf?f=json",t={method:"POST",headers:{"X-Esri-Auth-Client-Id":e,"X-Esri-Auth-Redirect-Uri":t},params:{f:"json"}},f.request(r,t)},e.validateAppAccess=c,Object.defineProperty(e,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=auth.umd.min.js.map |
{ | ||
"name": "@esri/arcgis-rest-auth", | ||
"version": "3.2.1", | ||
"version": "3.3.0", | ||
"description": "Authentication helpers for @esri/arcgis-rest-js.", | ||
@@ -16,7 +16,7 @@ "main": "dist/node/index.js", | ||
"dependencies": { | ||
"@esri/arcgis-rest-types": "^3.2.1", | ||
"@esri/arcgis-rest-types": "^3.3.0", | ||
"tslib": "^1.13.0" | ||
}, | ||
"devDependencies": { | ||
"@esri/arcgis-rest-request": "^3.2.1" | ||
"@esri/arcgis-rest-request": "^3.3.0" | ||
}, | ||
@@ -23,0 +23,0 @@ "peerDependencies": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
429595
4580