Site header proof of concept

Left some console logs in
I think this can be moved out of store to a cms helper class that manages this global data.
This commit is contained in:
Bill Richardson 2023-12-05 10:37:07 -05:00
parent 7648904408
commit fb8799fe6b
3 changed files with 27 additions and 5 deletions

View file

@ -24,6 +24,7 @@
<script> <script>
import menuModal from '@/iss-components/site-header/menu-modal/menu-modal.vue'; import menuModal from '@/iss-components/site-header/menu-modal/menu-modal.vue';
import alert from '@/ux-components/alert/alert.vue'; import alert from '@/ux-components/alert/alert.vue';
import { useMainStore } from '@/store';
import eventBus from '@/helpers/event-bus/event-bus'; import eventBus from '@/helpers/event-bus/event-bus';
import { globalEvents } from '@/constants/events'; import { globalEvents } from '@/constants/events';
@ -85,7 +86,7 @@ export default ({
}, },
methods: { methods: {
setupHeader() { setupHeader() {
const answers = this.getCmsContent(this.cmsWidgetName, 'Answers'); const answers = useMainStore().issConfig.issCmsContent.SiteHeaderWidget.Answers;
if (Array.isArray(answers)) { if (Array.isArray(answers)) {
this.headerAnswers = answers.filter((x) => x.AccountNumber == this.mainStore.issConfig.parentAccountNumber)[0]; this.headerAnswers = answers.filter((x) => x.AccountNumber == this.mainStore.issConfig.parentAccountNumber)[0];
this.headerAnswers = !this.headerAnswers ? answers.filter((x) => x.AccountNumber === '0')[0] : this.headerAnswers; this.headerAnswers = !this.headerAnswers ? answers.filter((x) => x.AccountNumber === '0')[0] : this.headerAnswers;

View file

@ -9,6 +9,8 @@
<script> <script>
// Supporting files // Supporting files
import issPageValues from '@/router/router-constants/issPage-values'; import issPageValues from '@/router/router-constants/issPage-values';
import { fetchCmsContentForPage } from '@/helpers/cms-content-helper';
import settleAllPromises from '@/helpers/layout-helper';
import { validateISSClientTag, validateISSClientSignature } from '@/helpers/clientauth-helper'; import { validateISSClientTag, validateISSClientSignature } from '@/helpers/clientauth-helper';
import { useMainStore } from '@/store'; import { useMainStore } from '@/store';
@ -25,6 +27,7 @@ export default {
}, },
data() { data() {
return { return {
issCmsContent: [],
unauthorized: false unauthorized: false
}; };
}, },
@ -64,12 +67,10 @@ export default {
if (resp?.data.active && resp?.data.accountName.length > 0) { if (resp?.data.active && resp?.data.accountName.length > 0) {
if (resp.data.authentication === 'RSAToken') { if (resp.data.authentication === 'RSAToken') {
const token = queryStringParams.token; const { token, signature } = queryStringParams;
const signature = queryStringParams.signature;
const vsigResp = await validateISSClientSignature(clientTag, token, signature); const vsigResp = await validateISSClientSignature(clientTag, token, signature);
this.mainStore.issConfig.isAuthenticated = vsigResp?.data?.valid ?? false;
this.mainStore.issConfig.isAuthenticated = vsigResp?.data?.valid ?? false;
if (this.mainStore.issConfig.isAuthenticated) { if (this.mainStore.issConfig.isAuthenticated) {
authorized = true; authorized = true;
} }
@ -78,6 +79,7 @@ export default {
} }
if (authorized) { if (authorized) {
await this.populateISSCmsComponents(resp.data.parentAccountNumber);
await this.populateISSConfigValues(resp.data); await this.populateISSConfigValues(resp.data);
if (resp.data.parameters?.length > 0) { if (resp.data.parameters?.length > 0) {
@ -95,6 +97,24 @@ export default {
window.location = `/?issPage=${issPageValues.WELCOME_PAGE}`; window.location = `/?issPage=${issPageValues.WELCOME_PAGE}`;
} }
}, },
async populateISSCmsComponents(accountNumber) {
console.log('get global cms components...');
console.log(accountNumber);
const cmsContentPromise = fetchCmsContentForPage('iss-siteheader');
// Settle promises and get results
const promiseResultMap = [
{
resultKey: 'cmsContent',
promise: cmsContentPromise
}
];
// use resultMap to populate layout content.
const resultMap = await settleAllPromises(promiseResultMap);
const issCmsContent = resultMap.cmsContent;
this.mainStore.issConfig.issCmsContent = issCmsContent;
},
async populateISSConfigValues(data) { async populateISSConfigValues(data) {
this.mainStore.issConfig.clientName = data.accountName; this.mainStore.issConfig.clientName = data.accountName;
this.mainStore.issConfig.clientDisplayName = data.accountName; // Defaults to use the client name. this.mainStore.issConfig.clientDisplayName = data.accountName; // Defaults to use the client name.

View file

@ -173,6 +173,7 @@ const getDefaultState = () => ({
issConfig: { issConfig: {
clientName: 'Generic Insurance', // this is the default and will be overriden by the client's name clientName: 'Generic Insurance', // this is the default and will be overriden by the client's name
clientDisplayName: 'Generic Insurance', // this is the default and will be overridden by the client's name or client display name. clientDisplayName: 'Generic Insurance', // this is the default and will be overridden by the client's name or client display name.
issCmsContent: [],
styleSheet: '', // Stylesheet used by the client. styleSheet: '', // Stylesheet used by the client.
parentAccountNumber: 0, // Parent account number used by the client. parentAccountNumber: 0, // Parent account number used by the client.
isCoverageEnabled: false, // Indicates if we should be calling coverage on this flow. isCoverageEnabled: false, // Indicates if we should be calling coverage on this flow.