UNPKG

msal

Version:
171 lines (151 loc) 8.01 kB
// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. import { Constants } from "../utils/Constants"; import { ClientAuthError } from "./ClientAuthError"; import { TelemetryOptions } from "../Configuration"; export const ClientConfigurationErrorMessage = { configurationNotSet: { code: "no_config_set", desc: "Configuration has not been set. Please call the UserAgentApplication constructor with a valid Configuration object." }, invalidCacheLocation: { code: "invalid_cache_location", desc: "The cache location provided is not valid." }, noStorageSupported: { code: "browser_storage_not_supported", desc: "localStorage and sessionStorage are not supported." }, noRedirectCallbacksSet: { code: "no_redirect_callbacks", desc: "No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. " + "More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics." }, invalidCallbackObject: { code: "invalid_callback_object", desc: "The object passed for the callback was invalid. " + "More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics." }, scopesRequired: { code: "scopes_required", desc: "Scopes are required to obtain an access token." }, emptyScopes: { code: "empty_input_scopes_error", desc: "Scopes cannot be passed as empty array." }, nonArrayScopes: { code: "nonarray_input_scopes_error", desc: "Scopes cannot be passed as non-array." }, clientScope: { code: "clientid_input_scopes_error", desc: "Client ID can only be provided as a single scope." }, invalidPrompt: { code: "invalid_prompt_value", desc: "Supported prompt values are 'login', 'select_account', 'consent' and 'none'", }, invalidAuthorityType: { code: "invalid_authority_type", desc: "The given authority is not a valid type of authority supported by MSAL. Please see here for valid authorities: <insert URL here>." }, authorityUriInsecure: { code: "authority_uri_insecure", desc: "Authority URIs must use https." }, authorityUriInvalidPath: { code: "authority_uri_invalid_path", desc: "Given authority URI is invalid." }, unsupportedAuthorityValidation: { code: "unsupported_authority_validation", desc: "The authority validation is not supported for this authority type." }, b2cAuthorityUriInvalidPath: { code: "b2c_authority_uri_invalid_path", desc: "The given URI for the B2C authority is invalid." }, claimsRequestParsingError: { code: "claims_request_parsing_error", desc: "Could not parse the given claims request object." }, emptyRequestError: { code: "empty_request_error", desc: "Request object is required." }, telemetryConfigError: { code: "telemetry_config_error", desc: "Telemetry config is not configured with required values" } }; /** * Error thrown when there is an error in configuration of the .js library. */ export class ClientConfigurationError extends ClientAuthError { constructor(errorCode: string, errorMessage?: string) { super(errorCode, errorMessage); this.name = "ClientConfigurationError"; Object.setPrototypeOf(this, ClientConfigurationError.prototype); } static createNoSetConfigurationError(): ClientConfigurationError { return new ClientConfigurationError(ClientConfigurationErrorMessage.configurationNotSet.code, `${ClientConfigurationErrorMessage.configurationNotSet.desc}`); } static createInvalidCacheLocationConfigError(givenCacheLocation: string): ClientConfigurationError { return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCacheLocation.code, `${ClientConfigurationErrorMessage.invalidCacheLocation.desc} Provided value: ${givenCacheLocation}. Possible values are: ${Constants.cacheLocationLocal}, ${Constants.cacheLocationSession}.`); } static createNoStorageSupportedError() : ClientConfigurationError { return new ClientConfigurationError(ClientConfigurationErrorMessage.noStorageSupported.code, ClientConfigurationErrorMessage.noStorageSupported.desc); } static createRedirectCallbacksNotSetError(): ClientConfigurationError { return new ClientConfigurationError(ClientConfigurationErrorMessage.noRedirectCallbacksSet.code, ClientConfigurationErrorMessage.noRedirectCallbacksSet.desc); } static createInvalidCallbackObjectError(callbackObject: object): ClientConfigurationError { return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCallbackObject.code, `${ClientConfigurationErrorMessage.invalidCallbackObject.desc} Given value for callback function: ${callbackObject}`); } static createEmptyScopesArrayError(scopesValue: string): ClientConfigurationError { return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopes.code, `${ClientConfigurationErrorMessage.emptyScopes.desc} Given value: ${scopesValue}.`); } static createScopesNonArrayError(scopesValue: string): ClientConfigurationError { return new ClientConfigurationError(ClientConfigurationErrorMessage.nonArrayScopes.code, `${ClientConfigurationErrorMessage.nonArrayScopes.desc} Given value: ${scopesValue}.`); } static createClientIdSingleScopeError(scopesValue: string): ClientConfigurationError { return new ClientConfigurationError(ClientConfigurationErrorMessage.clientScope.code, `${ClientConfigurationErrorMessage.clientScope.desc} Given value: ${scopesValue}.`); } static createScopesRequiredError(scopesValue: any): ClientConfigurationError { return new ClientConfigurationError(ClientConfigurationErrorMessage.scopesRequired.code, `${ClientConfigurationErrorMessage.scopesRequired.desc} Given value: ${scopesValue}`); } static createInvalidPromptError(promptValue: any): ClientConfigurationError { return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code, `${ClientConfigurationErrorMessage.invalidPrompt.desc} Given value: ${promptValue}`); } static createClaimsRequestParsingError(claimsRequestParseError: string): ClientConfigurationError { return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code, `${ClientConfigurationErrorMessage.claimsRequestParsingError.desc} Given value: ${claimsRequestParseError}`); } static createEmptyRequestError(): ClientConfigurationError { const { code, desc } = ClientConfigurationErrorMessage.emptyRequestError; return new ClientConfigurationError(code, desc); } static createTelemetryConfigError(config: TelemetryOptions): ClientConfigurationError { const { code, desc } = ClientConfigurationErrorMessage.telemetryConfigError; const requiredKeys = { applicationName: "string", applicationVersion: "string", telemetryEmitter: "function" }; const missingKeys = Object.keys(requiredKeys) .reduce((keys, key) => { return config[key] ? keys : keys.concat([ `${key} (${requiredKeys[key]})` ]); }, []); return new ClientConfigurationError(code, `${desc} mising values: ${missingKeys.join(",")}`); } }