@esri/arcgis-rest-auth
Version:
Authentication helpers for @esri/arcgis-rest-js.
67 lines • 2.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.canUseOnlineToken = exports.isFederated = exports.getOnlineEnvironment = exports.normalizeOnlinePortalUrl = exports.isOnline = void 0;
var arcgis_rest_request_1 = require("@esri/arcgis-rest-request");
/**
* Used to test if a URL is an ArcGIS Online URL
*/
var arcgisOnlineUrlRegex = /^https?:\/\/(\S+)\.arcgis\.com.+/;
/**
* Used to test if a URL is production ArcGIS Online Portal
*/
var arcgisOnlinePortalRegex = /^https?:\/\/(dev|devext|qa|qaext|www)\.arcgis\.com\/sharing\/rest+/;
/**
* Used to test if a URL is an ArcGIS Online Organization Portal
*/
var arcgisOnlineOrgPortalRegex = /^https?:\/\/(?:[a-z0-9-]+\.maps(dev|devext|qa|qaext)?)?.arcgis\.com\/sharing\/rest/;
function isOnline(url) {
return arcgisOnlineUrlRegex.test(url);
}
exports.isOnline = isOnline;
function normalizeOnlinePortalUrl(portalUrl) {
if (!arcgisOnlineUrlRegex.test(portalUrl)) {
return portalUrl;
}
switch (getOnlineEnvironment(portalUrl)) {
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";
}
}
exports.normalizeOnlinePortalUrl = normalizeOnlinePortalUrl;
function getOnlineEnvironment(url) {
if (!arcgisOnlineUrlRegex.test(url)) {
return null;
}
var match = url.match(arcgisOnlineUrlRegex);
var subdomain = match[1].split(".").pop();
if (subdomain.includes("dev")) {
return "dev";
}
if (subdomain.includes("qa")) {
return "qa";
}
return "production";
}
exports.getOnlineEnvironment = getOnlineEnvironment;
function isFederated(owningSystemUrl, portalUrl) {
var normalizedPortalUrl = arcgis_rest_request_1.cleanUrl(normalizeOnlinePortalUrl(portalUrl)).replace(/https?:\/\//, "");
var normalizedOwningSystemUrl = arcgis_rest_request_1.cleanUrl(owningSystemUrl).replace(/https?:\/\//, "");
return new RegExp(normalizedOwningSystemUrl, "i").test(normalizedPortalUrl);
}
exports.isFederated = isFederated;
function canUseOnlineToken(portalUrl, requestUrl) {
var portalIsOnline = isOnline(portalUrl);
var requestIsOnline = isOnline(requestUrl);
var portalEnv = getOnlineEnvironment(portalUrl);
var requestEnv = getOnlineEnvironment(requestUrl);
if (portalIsOnline && requestIsOnline && portalEnv === requestEnv) {
return true;
}
return false;
}
exports.canUseOnlineToken = canUseOnlineToken;
//# sourceMappingURL=federation-utils.js.map