diff --git a/src/constants/endpoints.js b/src/constants/endpoints.js index 27cc4df1..69da2eae 100644 --- a/src/constants/endpoints.js +++ b/src/constants/endpoints.js @@ -95,7 +95,7 @@ const endpoints = { url: "https://maps.googleapis.com/maps/api/js?key={apiKey}&libraries=places" }, ValidateClientTag: { - url: "/clientauth/api/v1/clientauth/validateClientTag", + url: "/clientauth/api/v1/clientauth/validate-client-tag", method: "GET", }, IsVinbyAddressPermissible:{ diff --git a/src/iss-components/site-footer/site-footer.vue b/src/iss-components/site-footer/site-footer.vue index 06e614d6..fb4849de 100644 --- a/src/iss-components/site-footer/site-footer.vue +++ b/src/iss-components/site-footer/site-footer.vue @@ -1,5 +1,5 @@ - + - + diff --git a/src/layouts/entry-page/entry-page.vue b/src/layouts/entry-page/entry-page.vue index ba8237d5..50493570 100644 --- a/src/layouts/entry-page/entry-page.vue +++ b/src/layouts/entry-page/entry-page.vue @@ -34,7 +34,14 @@ }, async validateClientTagOnEntry() { - const clientTag = this.$route.query.ClientTag; + // Dump the query string parameters into an array. Remove casing on the key for easy compare. + let queryStringParams = []; + for ( let param in this.$route.query) + { + queryStringParams[param.toLowerCase()] = this.$route.query[param]; + } + + const clientTag = queryStringParams["clienttag"]; const clientTagPresent = !!clientTag; let authorized = false; @@ -44,10 +51,15 @@ if ( resp?.data.active && resp?.data.accountName.length > 0 ) { - this.mainStore.issConfig.clientName = resp.data.accountName; - this.mainStore.issConfig.accountNumber = resp.data.accountNumber; - this.mainStore.issConfig.styleSheet = resp.data.styleSheet; + this.populateISSConfigValues(resp.data); + authorized = true; + + if ( resp.data.parameters?.length > 0 ) + { + const finalParams = this.combineClientParameters(resp.data.parameters, queryStringParams); + this.populateStoreItemsFromParams(finalParams); + } } } @@ -59,6 +71,96 @@ window.location = "/?issPage=" + issPageValues.WELCOME_PAGE; } }, + populateISSConfigValues(data) + { + this.mainStore.issConfig.clientName = data.accountName; + this.mainStore.issConfig.accountNumber = data.accountNumber; + this.mainStore.issConfig.styleSheet = data.styleSheet; + + try + { + const clientFlags = JSON.parse(data.clientFlags); + + if ( clientFlags.TPAEnabled ) + { + this.mainStore.issConfig.enableTPAFlow = true; + } + + if ( clientFlags.clientDisplayName != null ) + { + this.mainStore.issConfig.clientDisplayName = clientFlags.clientDisplayName; + } + } + catch ( e ) + { + console.error("Error parsing client flags: " + e); + } + }, + combineClientParameters(configParams, queryStringParams) + { + let finalParams = []; + + try + { + const clientParams = JSON.parse(configParams); + + for ( let cparam in clientParams) + { + let cname = clientParams[cparam].toLowerCase(); + + for ( let qsparam in queryStringParams) + { + let qsname = qsparam.toLowerCase(); + + if ( cname === qsname ) + { + finalParams[cname] = queryStringParams[cname]; + } + } + } + } + catch ( e ) + { + console.error("Error combining client parameters: " + e); + } + + return finalParams; + }, + populateStoreItemsFromParams(params) { + + // Populate store items from parameters. + for ( let param in params) + { + let name = param.toLowerCase(); + let value = params[param]; + + switch (name) + { + case "policynumber": + this.mainStore.order.policy.policyNumber = value; + break; + + case "lossdate": + // NOTE: May need some date parsing logic in here depending on client. + this.mainStore.order.policy.dateOfLoss = value; + break; + + case "returnurl": + this.mainStore.iisConfig.returnURL = value; + break; + + case "returnurl2": + this.mainStore.iisConfig.returnURL2 = value; + break; + + // Not stored + case "timestamp": + case "token": + case "signature": + break; + } + } + }, }, computed:{ }, diff --git a/src/layouts/policy-holder-details/policy-holder-details.vue b/src/layouts/policy-holder-details/policy-holder-details.vue index 856a339e..c9385cd4 100644 --- a/src/layouts/policy-holder-details/policy-holder-details.vue +++ b/src/layouts/policy-holder-details/policy-holder-details.vue @@ -1,11 +1,11 @@