53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
/*! @azure/msal-common v14.4.0 2023-11-07 */
|
|
'use strict';
|
|
import { createClientAuthError } from '../error/ClientAuthError.mjs';
|
|
import { hashNotDeserialized } from '../error/ClientAuthErrorCodes.mjs';
|
|
|
|
/*
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License.
|
|
*/
|
|
/**
|
|
* Parses hash string from given string. Returns empty string if no hash symbol is found.
|
|
* @param hashString
|
|
*/
|
|
function stripLeadingHashOrQuery(responseString) {
|
|
if (responseString.startsWith("#/")) {
|
|
return responseString.substring(2);
|
|
}
|
|
else if (responseString.startsWith("#") ||
|
|
responseString.startsWith("?")) {
|
|
return responseString.substring(1);
|
|
}
|
|
return responseString;
|
|
}
|
|
/**
|
|
* Returns URL hash as server auth code response object.
|
|
*/
|
|
function getDeserializedResponse(responseString) {
|
|
// Check if given hash is empty
|
|
if (!responseString || responseString.indexOf("=") < 0) {
|
|
return null;
|
|
}
|
|
try {
|
|
// Strip the # or ? symbol if present
|
|
const normalizedResponse = stripLeadingHashOrQuery(responseString);
|
|
// If # symbol was not present, above will return empty string, so give original hash value
|
|
const deserializedHash = Object.fromEntries(new URLSearchParams(normalizedResponse));
|
|
// Check for known response properties
|
|
if (deserializedHash.code ||
|
|
deserializedHash.error ||
|
|
deserializedHash.error_description ||
|
|
deserializedHash.state) {
|
|
return deserializedHash;
|
|
}
|
|
}
|
|
catch (e) {
|
|
throw createClientAuthError(hashNotDeserialized);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
export { getDeserializedResponse, stripLeadingHashOrQuery };
|
|
//# sourceMappingURL=UrlUtils.mjs.map
|