diff --git a/__tests__/pages/login.test.js b/__tests__/pages/login.test.js index bec80b17c..b39ab6d7d 100644 --- a/__tests__/pages/login.test.js +++ b/__tests__/pages/login.test.js @@ -11,6 +11,13 @@ jest.mock('next/router', () => ({ useRouter: jest.fn(), })) +//mock auth function +jest.mock('../../lib/auth', () => ({ + AuthIsDisabled: () => { + return true + }, +})) + describe('login page', () => { /* Place-holder Meta Data Props */ const meta = { diff --git a/components/BackToButton.js b/components/BackToButton.js index 12cce127b..9167387eb 100644 --- a/components/BackToButton.js +++ b/components/BackToButton.js @@ -9,7 +9,7 @@ export default function BackToButton(props) { {props.buttonLinkText} diff --git a/components/BenefitTasks.js b/components/BenefitTasks.js index 86b8ab540..30a90aa17 100644 --- a/components/BenefitTasks.js +++ b/components/BenefitTasks.js @@ -47,7 +47,7 @@ export default function BenefitTasks(props) { props.openModal(task.link, 'betaModal') } }} - data-gc-analytics-customclick={`${props.refPageAA} ${props.acronym}:${task.title}`} + data-gc-analytics-customclick={`${props.refPageAA} ${props.acronym}:${task.id}`} className="flex items-center underline py-1 text-deep-blue-dark hover:text-blue-hover" > -

+

{props.cardTitle}

{!isOpen ? null : (
diff --git a/components/ExitBeta.js b/components/ExitBeta.js index 7bbf579c1..6854ed96d 100644 --- a/components/ExitBeta.js +++ b/components/ExitBeta.js @@ -23,7 +23,7 @@ export default function ExitBeta(props) { type="button" aria-label={props.closeModalAria} onClick={props.closeModal} - data-gc-analytics-customclick={`ESDC-EDSC:${props.refPageAA}:Close-Fermer`} + data-gc-analytics-customclick={`ESDC-EDSC:${props.refPageAA}:Close`} >
diff --git a/components/Layout.js b/components/Layout.js index c5558fce8..d3d7d108a 100644 --- a/components/Layout.js +++ b/components/Layout.js @@ -6,7 +6,6 @@ import { } from '@dts-stn/service-canada-design-system' import { useState, cloneElement } from 'react' import MetaData from './MetaData' -import { signOut } from 'next-auth/react' import PhaseBanner from './PhaseBanner' import en from '../locales/en' import fr from '../locales/fr' @@ -23,7 +22,6 @@ export default function Layout(props) { const [openModalWithLink, setOpenModalWithLink] = useState({ activeLink: '/', context: null, - contentLabel: null, }) const openModal = (link, context) => { @@ -32,7 +30,6 @@ export default function Layout(props) { isOpen: true, activeLink: link, context, - contentLabel: null, } }) } @@ -43,7 +40,6 @@ export default function Layout(props) { isOpen: false, activeLink: '/', context: null, - contentLabel: null, } }) } @@ -61,9 +57,7 @@ export default function Layout(props) { bannerLinkHref={props.bannerContent.bannerLinkHref || ''} bannerButtonText={props.bannerContent.bannerButtonText || ''} bannerButtonLink={props.bannerContent.bannerButtonLink || ''} - bannerButtonExternalText={ - props.bannerContent.bannerButtonExternalText || '' - } + id={props.bannerContent.id || ''} bannerButtonExternalLink icon={props.bannerContent.icon || ''} popupContent={props.popupContent || ''} @@ -97,12 +91,10 @@ export default function Layout(props) { props.children.props.aaPrefix } menuProps={{ - onSignOut: () => { - signOut() - }, menuList: [ { key: 'dashKey', + id: 'dash', value: t.menuItems.dashboard, path: `${ props.locale === 'en' @@ -113,12 +105,14 @@ export default function Layout(props) { }, { key: 'profileKey', + id: 'profile', value: t.menuItems.profile, path: `${props.locale === 'en' ? '/en/profile' : '/fr/profil'}`, component: Link, }, { key: 'securityKey', + id: 'security', value: t.menuItems.security, path: `${ props.locale === 'en' @@ -129,6 +123,7 @@ export default function Layout(props) { }, { key: 'contactKey', + id: 'contact', value: t.menuItems.contactUs, path: `${ props.locale === 'en' ? '/en/contact-us' : '/fr/contactez-nous' @@ -137,6 +132,7 @@ export default function Layout(props) { }, { key: 'signOutKey', + id: 'signOut', value: t.menuItems.signOut, path: '/auth/logout', component: Link, diff --git a/components/MostReqTasks.js b/components/MostReqTasks.js index 63dbaf764..c841f751c 100644 --- a/components/MostReqTasks.js +++ b/components/MostReqTasks.js @@ -24,8 +24,8 @@ export default function MostReqTasks(props) { props.openModal(task.link, 'betaModal') } }} - data-gc-analytics-customclick={`${props.refPageAA} ${props.acronym}:${task.title}`} - className="flex items-center underline pl-2 text-white hover:text-gray-50a" + data-gc-analytics-customclick={`${props.refPageAA} ${props.acronym}:${task.id}`} + className="flex items-center underline pl-2 text-white hover:text-gray-50a focus:outline-1 focus:outline-white" > { Router.push('/auth/logout') @@ -67,6 +67,7 @@ export default function MultiModal(props) { refPageAA={aaPrefix} /> ) + contentLabel = popupContentNA.popupTitle break case 'betaBannerModal': modalBody = ( @@ -82,6 +83,7 @@ export default function MultiModal(props) { refPageAA={aaPrefix} /> ) + contentLabel = popupContent.popupTitle break case 'countDown': modalBody = ( @@ -96,6 +98,7 @@ export default function MultiModal(props) { refPageAA={aaPrefix} /> ) + contentLabel = popupStaySignedIn.bannerHeading break default: // code block @@ -108,7 +111,7 @@ export default function MultiModal(props) { className="flex justify-center bg-black/75 h-full" isOpen={openModalWithLink.context != null} onRequestClose={closeModal} - contentLabel={openModalWithLink.contentLabel} + contentLabel={contentLabel} > {modalBody} diff --git a/components/PageLink.js b/components/PageLink.js index 0d201c502..73e19ca03 100644 --- a/components/PageLink.js +++ b/components/PageLink.js @@ -21,7 +21,7 @@ export default function PageLink(props) { {props.linkText} @@ -35,6 +35,7 @@ export default function PageLink(props) { buttonId={props.buttonId} buttonLinkText={props.buttonLinkText} refPageAA={props.refPageAA} + id={props.dashId} /> diff --git a/components/PhaseBanner.js b/components/PhaseBanner.js index 4853110a5..bcaa1b29a 100644 --- a/components/PhaseBanner.js +++ b/components/PhaseBanner.js @@ -31,7 +31,7 @@ export default function PhaseBanner(props) { rel={ props.bannerButtonExternalLink ? 'noopener noreferrer' : undefined } - data-gc-analytics-customclick={`ESDC-EDSC:${props.refPageAA}:${props.bannerButtonExternalText}`} + data-gc-analytics-customclick={`ESDC-EDSC:${props.refPageAA}:${props.id}`} > {props.bannerLink} {props.bannerButtonExternalLink && ( diff --git a/components/ProfileTasks.js b/components/ProfileTasks.js index 67045b05c..4f505f955 100644 --- a/components/ProfileTasks.js +++ b/components/ProfileTasks.js @@ -10,6 +10,7 @@ export default function ProfileTasks(props) {
    {props.tasks.map((task, index) => { return ( @@ -24,7 +25,7 @@ export default function ProfileTasks(props) { props.openModal(task.link, 'betaModal') } }} - data-gc-analytics-customclick={`${props.refPageAA} ${props.acronym}:${task.title}`} + data-gc-analytics-customclick={`${props.refPageAA} ${props.acronym}:${task.id}`} >
    {props.icon ? ( ) : ( )} - {props.caption} + {props.caption}
    ) @@ -44,4 +45,5 @@ ViewMoreLessButton.propTypes = { ariaExpanded: propTypes.string, className: propTypes.string, dataCy: propTypes.string, + ariaLabel: propTypes.string, } diff --git a/components/sessionModals/SessionTimeout.js b/components/sessionModals/SessionTimeout.js deleted file mode 100644 index 5e77cab31..000000000 --- a/components/sessionModals/SessionTimeout.js +++ /dev/null @@ -1,56 +0,0 @@ -import { useEffect, useCallback } from 'react' -import CountDown from './CountDown' -import Router from 'next/router' -import { useIdleTimer } from 'react-idle-timer' - -const SessionTimeout = ({ - popupStaySignedIn, - aaPrefix, - openModal, - closeModal, -}) => { - const handleOnIdle = () => { - Router.push('/auth/logout') - } - - const { isPrompted, reset, getRemainingTime } = useIdleTimer({ - onIdle: handleOnIdle, - promptBeforeIdle: 0.5 * 60 * 1000, // 30 seconds - timeout: 1 * 60 * 1000, // 1 minute - }) - - const onStay = () => { - reset() - closeModal() - } - - const tick = useCallback(() => { - const minutes = Math.floor(getRemainingTime() / 60000) - const seconds = Math.floor((getRemainingTime() / 1000) % 60).toFixed(0) - if (isPrompted()) { - openModal( - - ) - } - }, [getRemainingTime]) - - useEffect(() => { - const timer = setInterval(tick, 1000) - return () => { - clearInterval(timer) - } - }, [tick]) - - return null -} - -export default SessionTimeout diff --git a/cypress/e2e/Login.cy.js b/cypress/e2e/Login.cy.js new file mode 100644 index 000000000..c95d43406 --- /dev/null +++ b/cypress/e2e/Login.cy.js @@ -0,0 +1,18 @@ +/**This and the logout tests currently only test that the page is accessible and reachable. +It does not test the authentication functionality currently since those endpoints are on prem only at this time. **/ + +beforeEach(() => { + cy.visit('/auth/login') +}) + +describe('Validate login page', () => { + it('Lands on login page and displays loading spinner', () => { + cy.get('[data-cy="loading-spinner"]') + .should('be.visible') + .and('have.text', 'Loading / Chargement en cours ...') + }) + it('Redirects to dashboard', () => { + cy.wait(2000) + cy.url().should('contains', '/my-dashboard') + }) +}) diff --git a/cypress/e2e/Logout.cy.js b/cypress/e2e/Logout.cy.js new file mode 100644 index 000000000..682278b4a --- /dev/null +++ b/cypress/e2e/Logout.cy.js @@ -0,0 +1,18 @@ +/**This and the login tests currently only test that the page is accessible and reachable. +It does not test the authentication functionality currently since those endpoints are on prem only at this time. **/ + +beforeEach(() => { + cy.visit('/auth/logout') +}) + +describe('Validate logout page', () => { + it('Lands on logout page and displays loading spinner', () => { + cy.get('[data-cy="loading-spinner"]') + .should('be.visible') + .and('have.text', 'Loading / Chargement en cours ...') + }) + it('Redirects to index page', () => { + cy.wait(2000) + cy.url().should('contains', '/') + }) +}) diff --git a/graphql/mappers/beta-banner-opt-out.js b/graphql/mappers/beta-banner-opt-out.js index 9c36d0669..24b2edfa7 100644 --- a/graphql/mappers/beta-banner-opt-out.js +++ b/graphql/mappers/beta-banner-opt-out.js @@ -26,6 +26,7 @@ export async function getBetaBannerContent() { resOptOutContent.scFragments[1].scDestinationURLEn ) || '/', icon: resOptOutContent.scFragments[0].scIconCSS, + id: resOptOutContent.scFragments[0].scId, }, fr: { bannerBoldText: resOptOutContent.scContentFr.json[0].content[0].value, @@ -42,6 +43,7 @@ export async function getBetaBannerContent() { resOptOutContent.scFragments[1].scDestinationURLEn ) || '/', icon: resOptOutContent.scFragments[0].scIconCSS, + id: resOptOutContent.scFragments[0].scId, }, } diff --git a/graphql/mappers/my-dashboard.js b/graphql/mappers/my-dashboard.js index a59e5f580..09f3683f3 100644 --- a/graphql/mappers/my-dashboard.js +++ b/graphql/mappers/my-dashboard.js @@ -22,6 +22,7 @@ export async function getMyDashboardContent() { title: list.scTitleEn, tasks: list.scItems.map((item) => { return { + id: item.scId, title: item.scLinkTextEn, areaLabel: item.scLinkTextAssistiveEn, link: buildLink(item.schURLType, item.scDestinationURLEn), @@ -59,6 +60,7 @@ export async function getMyDashboardContent() { title: list.scTitleFr, tasks: list.scItems.map((item) => { return { + id: item.scId, title: item.scLinkTextFr, areaLabel: item.scLinkTextAssistiveFr, link: buildLink(item.schURLType, item.scDestinationURLFr), diff --git a/graphql/mappers/privacy-notice-terms-conditions.js b/graphql/mappers/privacy-notice-terms-conditions.js index c9f08f0ca..68b738c88 100644 --- a/graphql/mappers/privacy-notice-terms-conditions.js +++ b/graphql/mappers/privacy-notice-terms-conditions.js @@ -16,12 +16,14 @@ export async function getPrivacyConditionContent() { const mappedPrivacyConditions = { en: { + id: response.data.schPagev1ByPath.item.scId, breadcrumb: response.data.schPagev1ByPath.item.scBreadcrumbParentPages.map( (level) => { return { link: level.scPageNameEn, text: level.scTitleEn, + id: level.scId, } } ), @@ -34,12 +36,14 @@ export async function getPrivacyConditionContent() { content: privacyTermsConditionsFragment.scContentEn.markdown, }, fr: { + id: response.data.schPagev1ByPath.item.scId, breadcrumb: response.data.schPagev1ByPath.item.scBreadcrumbParentPages.map( (level) => { return { link: level.scPageNameFr, text: level.scTitleFr, + id: level.scId, } } ), @@ -47,7 +51,7 @@ export async function getPrivacyConditionContent() { heading: response.data.schPagev1ByPath.item.scTitleFr, alert: { type: 'info', - text: alertFragment.scContentEn.markdown, + text: alertFragment.scContentFr.markdown, }, content: privacyTermsConditionsFragment.scContentFr.markdown, }, diff --git a/graphql/mappers/profile.js b/graphql/mappers/profile.js index 5b0aae88f..4b9b8fe96 100644 --- a/graphql/mappers/profile.js +++ b/graphql/mappers/profile.js @@ -44,6 +44,7 @@ export async function getProfileContent() { element.scId === 'oas-profile-list' ) { return { + id: element.scId, title: element.scTitleEn, tasks: element.scItems.map((item) => { return { @@ -66,6 +67,7 @@ export async function getProfileContent() { enLookingForFragment.json[1].content[1].value, ], link: 'security-settings', + id: 'security-settings', }, backToDashboard: { id: backToDashboardFragment.scId, @@ -93,6 +95,7 @@ export async function getProfileContent() { element.scId === 'oas-profile-list' ) { return { + id: element.scId, title: element.scTitleFr, tasks: element.scItems.map((item) => { return { @@ -115,6 +118,7 @@ export async function getProfileContent() { frLookingForFragment.json[1].content[1].value, ], link: 'parametres-securite', + id: 'security-settings', }, backToDashboard: { id: backToDashboardFragment.scId, diff --git a/graphql/mappers/security-settings.js b/graphql/mappers/security-settings.js index 5428c2e4e..180771a7d 100644 --- a/graphql/mappers/security-settings.js +++ b/graphql/mappers/security-settings.js @@ -53,6 +53,7 @@ export async function getSecuritySettingsContent() { return element.value || null }), link: '/profile', + id: 'profile', }, securityQuestions: { linkTitle: { @@ -94,6 +95,7 @@ export async function getSecuritySettingsContent() { return element.value || null }), link: '/fr/profil', + id: 'profile', }, securityQuestions: { linkTitle: { diff --git a/graphql/queries/contact-us-pages-dynamic.graphql b/graphql/queries/contact-us-pages-dynamic.graphql index 9c17458f1..0d1f7cf5a 100644 --- a/graphql/queries/contact-us-pages-dynamic.graphql +++ b/graphql/queries/contact-us-pages-dynamic.graphql @@ -59,12 +59,6 @@ schIntroFr { markdown } - schHoursDetailsFr { - markdown - } - schLocationLabelEn { - markdown - } schDetails { ... on SCHListv1Model { diff --git a/graphql/queries/my-dashboard.graphql b/graphql/queries/my-dashboard.graphql index 108993da0..b567a7306 100644 --- a/graphql/queries/my-dashboard.graphql +++ b/graphql/queries/my-dashboard.graphql @@ -47,6 +47,7 @@ scTitleFr scItems { ... on SCHTaskv1Model{ + scId scLinkTextEn scLinkTextFr scLinkTextAssistiveEn diff --git a/locales/en.js b/locales/en.js index 044b81746..44ac6d895 100644 --- a/locales/en.js +++ b/locales/en.js @@ -138,6 +138,7 @@ export default { url_serviceCanada: 'https://www.canada.ca/fr/emploi-developpement-social/ministere/portefeuille/service-canada.html', url_dashboard: '/my-dashboard', + id_dashboard: 'my-dashboard', aria_exit_beta_modal: 'Exiting beta warning modal', close_modal: 'Close modal', } diff --git a/locales/fr.js b/locales/fr.js index b6c82951d..a7b8f47a1 100644 --- a/locales/fr.js +++ b/locales/fr.js @@ -131,6 +131,7 @@ export default { url_serviceCanada: 'https://www.canada.ca/fr/emploi-developpement-social/ministere/portefeuille/service-canada.html', url_dashboard: '/fr/mon-tableau-de-bord', + id_dashboard: 'my-dashboard', aria_exit_beta_modal: 'Exiting beta warning modal', close_modal: 'Fermer modal', } diff --git a/package-lock.json b/package-lock.json index ebf3b3f58..bb9c3cb33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@apollo/client": "^3.7.8", + "@apollo/client": "^3.7.15", "@dts-stn/service-canada-design-system": "^1.59.4", "@fortawesome/fontawesome-svg-core": "^6.2.0", "@fortawesome/free-regular-svg-icons": "^6.2.0", @@ -18,14 +18,14 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/auto-instrumentations-node": "^0.36.0", "@opentelemetry/sdk-node": "^0.35.0", - "axios": "^1.3.4", + "axios": "^1.4.0", "babel-plugin-macros": "^3.1.0", "cross-env": "^7.0.3", "lodash.throttle": "^4.1.1", "markdown-to-jsx": "^7.2.0", "next": "^12.3.3", - "next-auth": "^4.20.1", - "next-i18next": "^13.0.3", + "next-auth": "^4.22.1", + "next-i18next": "^13.3.0", "prom-client": "^12.0.0", "prop-types": "^15.8.1", "react": "17.0.2", @@ -33,7 +33,7 @@ "react-focus-on": "^3.8.1", "react-idle-timer": "^5.6.2", "react-modal": "^3.16.1", - "release-please": "^15.7.0" + "release-please": "^15.11.0" }, "devDependencies": { "@babel/preset-react": "^7.18.6", @@ -44,8 +44,8 @@ "autoprefixer": "^10.4.2", "axe-core": "^4.3.3", "babel-jest": "^27.1.0", - "cypress": "^11.2.0", - "cypress-axe": "^1.1.0", + "cypress": "^12.15.0", + "cypress-axe": "^1.4.0", "cypress-multi-reporters": "^1.5.0", "eslint": "7.32.0", "eslint-config-next": "^12.2.5", @@ -84,17 +84,17 @@ } }, "node_modules/@apollo/client": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.7.8.tgz", - "integrity": "sha512-o1NxF4ytET2w9HSVMLwYUEEdv6H3XPpbh9M+ABVGnUVT0s6T9pgqRtYO4pFP1TmeDmb1pbRfVhFwh3gC167j5Q==", + "version": "3.7.15", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.7.15.tgz", + "integrity": "sha512-pLScjo4GAQRWKWyEg2J3FlQr9fbUAuADT0EI2+JlLf2BjaU9I7WUaZVD9w+0qNPE8BZqs53MRQq0OCm1QCW+eg==", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", "@wry/context": "^0.7.0", "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", + "@wry/trie": "^0.4.0", "graphql-tag": "^2.12.6", "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", + "optimism": "^0.16.2", "prop-types": "^15.7.2", "response-iterator": "^0.2.6", "symbol-observable": "^4.0.0", @@ -124,6 +124,17 @@ } } }, + "node_modules/@apollo/client/node_modules/@wry/trie": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.4.3.tgz", + "integrity": "sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@babel/code-frame": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", @@ -7611,9 +7622,9 @@ } }, "node_modules/axios": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", - "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -8406,9 +8417,9 @@ } }, "node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, "engines": { "node": ">= 6" @@ -8655,9 +8666,9 @@ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" }, "node_modules/cypress": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-11.2.0.tgz", - "integrity": "sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA==", + "version": "12.15.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.15.0.tgz", + "integrity": "sha512-FqGbxsH+QgjStuTO9onXMIeF44eOrgVwPvlcvuzLIaePQMkl72YgBvpuHlBGRcrw3Q4SvqKfajN8iV5XWShAiQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -8675,10 +8686,10 @@ "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "commander": "^6.2.1", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "^4.3.2", + "debug": "^4.3.4", "enquirer": "^2.3.6", "eventemitter2": "6.4.7", "execa": "4.1.0", @@ -8693,7 +8704,7 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "minimist": "^1.2.8", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", "proxy-from-env": "1.0.0", @@ -8708,20 +8719,20 @@ "cypress": "bin/cypress" }, "engines": { - "node": ">=12.0.0" + "node": "^14.0.0 || ^16.0.0 || >=18.0.0" } }, "node_modules/cypress-axe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cypress-axe/-/cypress-axe-1.1.0.tgz", - "integrity": "sha512-4LsLHdjtIRHdOeiiRMk+Yf04UQjpuQ20paOi1x71z8wnL/47n73DBJ9AEdLQkptlljtsDj+DgLtysl7BeCL4Hg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cypress-axe/-/cypress-axe-1.4.0.tgz", + "integrity": "sha512-Ut7NKfzjyKm0BEbt2WxuKtLkIXmx6FD2j0RwdvO/Ykl7GmB/qRQkwbKLk3VP35+83hiIr8GKD04PDdrTK5BnyA==", "dev": true, "engines": { "node": ">=10" }, "peerDependencies": { "axe-core": "^3 || ^4", - "cypress": "^10 || ^11" + "cypress": "^10 || ^11 || ^12" } }, "node_modules/cypress-multi-reporters": { @@ -11192,9 +11203,9 @@ } }, "node_modules/i18next": { - "version": "22.4.9", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.9.tgz", - "integrity": "sha512-8gWMmUz460KJDQp/ob3MNUX84cVuDRY9PLFPnV8d+Qezz/6dkjxwOaH70xjrCNDO+JrUL25iXfAIN9wUkInNZw==", + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz", + "integrity": "sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==", "funding": [ { "type": "individual", @@ -15170,9 +15181,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15898,9 +15909,9 @@ } }, "node_modules/next-auth": { - "version": "4.20.1", - "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.20.1.tgz", - "integrity": "sha512-ZcTUN4qzzZ/zJYgOW0hMXccpheWtAol8QOMdMts+LYRcsPGsqf2hEityyaKyECQVw1cWInb9dF3wYwI5GZdEmQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.22.1.tgz", + "integrity": "sha512-NTR3f6W7/AWXKw8GSsgSyQcDW6jkslZLH8AiZa5PQ09w1kR8uHtR9rez/E9gAq/o17+p0JYHE8QjF3RoniiObA==", "dependencies": { "@babel/runtime": "^7.20.13", "@panva/hkdf": "^1.0.2", @@ -15925,9 +15936,9 @@ } }, "node_modules/next-i18next": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/next-i18next/-/next-i18next-13.0.3.tgz", - "integrity": "sha512-7AA8J6WbkxRBtSf1+97LSAE7btxWZHsBIJEJ3FuTSBgYtpRiO5NGjcb8XbNAlz6yGU0TtS+yZE+/Wu83KhIT1Q==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/next-i18next/-/next-i18next-13.3.0.tgz", + "integrity": "sha512-X4kgi51BCOoGdKbv87eZ8OU7ICQDg5IP+T5fNjqDY3os9ea0OKTY4YpAiVFiwcI9XimcUmSPbKO4a9jFUyYSgg==", "funding": [ { "type": "individual", @@ -15940,18 +15951,14 @@ { "type": "individual", "url": "https://locize.com" - }, - { - "type": "individual", - "url": "https://github.com/belgattitude" } ], "dependencies": { - "@babel/runtime": "^7.20.6", + "@babel/runtime": "^7.20.13", "@types/hoist-non-react-statics": "^3.3.1", "core-js": "^3", "hoist-non-react-statics": "^3.3.2", - "i18next-fs-backend": "^2.1.0" + "i18next-fs-backend": "^2.1.1" }, "engines": { "node": ">=14" @@ -15960,7 +15967,7 @@ "i18next": "^22.0.6", "next": ">= 12.0.0", "react": ">= 17.0.2", - "react-i18next": "^12.1.1" + "react-i18next": "^12.2.0" } }, "node_modules/next/node_modules/nanoid": { @@ -17334,9 +17341,9 @@ } }, "node_modules/react-i18next": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.1.4.tgz", - "integrity": "sha512-XQND7jYtgM7ht5PH3yIZljCRpAMTlH/zmngM9ZjToqa+0BR6xuu8c7QF0WIIOEjcMTB2S3iOfpN/xG/ZrAnO6g==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz", + "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==", "peer": true, "dependencies": { "@babel/runtime": "^7.20.6", @@ -17736,9 +17743,9 @@ } }, "node_modules/release-please": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/release-please/-/release-please-15.7.0.tgz", - "integrity": "sha512-fAtf2yfZeu8vwfE3yrGbGWxrpbBkDpI3PWLTGkuKfFaC2M25pCChfWkPxCUiX//75fa2fIRh/cb2so9X9SU/ng==", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/release-please/-/release-please-15.11.0.tgz", + "integrity": "sha512-gCo/iK6OJXMh+QpkY76+ulQnXJZEac1CPZb57rKaQgvAomAqxiYdVscY5csfo/2iYnefuQ9dahVUfsAq2K6riQ==", "dependencies": { "@conventional-commits/parser": "^0.4.1", "@google-automations/git-file-utils": "^1.2.5", @@ -17773,6 +17780,7 @@ "unist-util-visit": "^2.0.3", "unist-util-visit-parents": "^3.1.1", "xpath": "^0.0.32", + "yaml": "^2.2.2", "yargs": "^17.0.0" }, "bin": { @@ -17908,6 +17916,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/release-please/node_modules/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "engines": { + "node": ">= 14" + } + }, "node_modules/request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", @@ -20421,23 +20437,33 @@ } }, "@apollo/client": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.7.8.tgz", - "integrity": "sha512-o1NxF4ytET2w9HSVMLwYUEEdv6H3XPpbh9M+ABVGnUVT0s6T9pgqRtYO4pFP1TmeDmb1pbRfVhFwh3gC167j5Q==", + "version": "3.7.15", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.7.15.tgz", + "integrity": "sha512-pLScjo4GAQRWKWyEg2J3FlQr9fbUAuADT0EI2+JlLf2BjaU9I7WUaZVD9w+0qNPE8BZqs53MRQq0OCm1QCW+eg==", "requires": { "@graphql-typed-document-node/core": "^3.1.1", "@wry/context": "^0.7.0", "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", + "@wry/trie": "^0.4.0", "graphql-tag": "^2.12.6", "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", + "optimism": "^0.16.2", "prop-types": "^15.7.2", "response-iterator": "^0.2.6", "symbol-observable": "^4.0.0", "ts-invariant": "^0.10.3", "tslib": "^2.3.0", "zen-observable-ts": "^1.2.5" + }, + "dependencies": { + "@wry/trie": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.4.3.tgz", + "integrity": "sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==", + "requires": { + "tslib": "^2.3.0" + } + } } }, "@babel/code-frame": { @@ -26071,9 +26097,9 @@ "dev": true }, "axios": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz", - "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", "requires": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -26646,9 +26672,9 @@ "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" }, "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, "common-tags": { @@ -26832,9 +26858,9 @@ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" }, "cypress": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-11.2.0.tgz", - "integrity": "sha512-u61UGwtu7lpsNWLUma/FKNOsrjcI6wleNmda/TyKHe0dOBcVjbCPlp1N6uwFZ0doXev7f/91YDpU9bqDCFeBLA==", + "version": "12.15.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.15.0.tgz", + "integrity": "sha512-FqGbxsH+QgjStuTO9onXMIeF44eOrgVwPvlcvuzLIaePQMkl72YgBvpuHlBGRcrw3Q4SvqKfajN8iV5XWShAiQ==", "dev": true, "requires": { "@cypress/request": "^2.88.10", @@ -26851,10 +26877,10 @@ "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "commander": "^6.2.1", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "^4.3.2", + "debug": "^4.3.4", "enquirer": "^2.3.6", "eventemitter2": "6.4.7", "execa": "4.1.0", @@ -26869,7 +26895,7 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "minimist": "^1.2.8", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", "proxy-from-env": "1.0.0", @@ -26959,9 +26985,9 @@ } }, "cypress-axe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cypress-axe/-/cypress-axe-1.1.0.tgz", - "integrity": "sha512-4LsLHdjtIRHdOeiiRMk+Yf04UQjpuQ20paOi1x71z8wnL/47n73DBJ9AEdLQkptlljtsDj+DgLtysl7BeCL4Hg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cypress-axe/-/cypress-axe-1.4.0.tgz", + "integrity": "sha512-Ut7NKfzjyKm0BEbt2WxuKtLkIXmx6FD2j0RwdvO/Ykl7GmB/qRQkwbKLk3VP35+83hiIr8GKD04PDdrTK5BnyA==", "dev": true, "requires": {} }, @@ -28737,9 +28763,9 @@ "dev": true }, "i18next": { - "version": "22.4.9", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.4.9.tgz", - "integrity": "sha512-8gWMmUz460KJDQp/ob3MNUX84cVuDRY9PLFPnV8d+Qezz/6dkjxwOaH70xjrCNDO+JrUL25iXfAIN9wUkInNZw==", + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz", + "integrity": "sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==", "peer": true, "requires": { "@babel/runtime": "^7.20.6" @@ -31674,9 +31700,9 @@ } }, "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, "minimist-options": { "version": "4.1.0", @@ -32230,9 +32256,9 @@ } }, "next-auth": { - "version": "4.20.1", - "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.20.1.tgz", - "integrity": "sha512-ZcTUN4qzzZ/zJYgOW0hMXccpheWtAol8QOMdMts+LYRcsPGsqf2hEityyaKyECQVw1cWInb9dF3wYwI5GZdEmQ==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.22.1.tgz", + "integrity": "sha512-NTR3f6W7/AWXKw8GSsgSyQcDW6jkslZLH8AiZa5PQ09w1kR8uHtR9rez/E9gAq/o17+p0JYHE8QjF3RoniiObA==", "requires": { "@babel/runtime": "^7.20.13", "@panva/hkdf": "^1.0.2", @@ -32246,15 +32272,15 @@ } }, "next-i18next": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/next-i18next/-/next-i18next-13.0.3.tgz", - "integrity": "sha512-7AA8J6WbkxRBtSf1+97LSAE7btxWZHsBIJEJ3FuTSBgYtpRiO5NGjcb8XbNAlz6yGU0TtS+yZE+/Wu83KhIT1Q==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/next-i18next/-/next-i18next-13.3.0.tgz", + "integrity": "sha512-X4kgi51BCOoGdKbv87eZ8OU7ICQDg5IP+T5fNjqDY3os9ea0OKTY4YpAiVFiwcI9XimcUmSPbKO4a9jFUyYSgg==", "requires": { - "@babel/runtime": "^7.20.6", + "@babel/runtime": "^7.20.13", "@types/hoist-non-react-statics": "^3.3.1", "core-js": "^3", "hoist-non-react-statics": "^3.3.2", - "i18next-fs-backend": "^2.1.0" + "i18next-fs-backend": "^2.1.1" } }, "node-fetch": { @@ -33197,9 +33223,9 @@ } }, "react-i18next": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.1.4.tgz", - "integrity": "sha512-XQND7jYtgM7ht5PH3yIZljCRpAMTlH/zmngM9ZjToqa+0BR6xuu8c7QF0WIIOEjcMTB2S3iOfpN/xG/ZrAnO6g==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz", + "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==", "peer": true, "requires": { "@babel/runtime": "^7.20.6", @@ -33475,9 +33501,9 @@ "dev": true }, "release-please": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/release-please/-/release-please-15.7.0.tgz", - "integrity": "sha512-fAtf2yfZeu8vwfE3yrGbGWxrpbBkDpI3PWLTGkuKfFaC2M25pCChfWkPxCUiX//75fa2fIRh/cb2so9X9SU/ng==", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/release-please/-/release-please-15.11.0.tgz", + "integrity": "sha512-gCo/iK6OJXMh+QpkY76+ulQnXJZEac1CPZb57rKaQgvAomAqxiYdVscY5csfo/2iYnefuQ9dahVUfsAq2K6riQ==", "requires": { "@conventional-commits/parser": "^0.4.1", "@google-automations/git-file-utils": "^1.2.5", @@ -33512,6 +33538,7 @@ "unist-util-visit": "^2.0.3", "unist-util-visit-parents": "^3.1.1", "xpath": "^0.0.32", + "yaml": "^2.2.2", "yargs": "^17.0.0" }, "dependencies": { @@ -33598,6 +33625,11 @@ "version": "3.5.4", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.5.4.tgz", "integrity": "sha512-/Je22Er4LPoln256pcLzj73MUmPrTWg8u4WB1RlxaDl0idJOfD1r259VtKOinp4xLJqJ9zYVMuWOun6Ssp7boA==" + }, + "yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==" } } }, diff --git a/package.json b/package.json index bd46a2ad5..76fd7d1fe 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "proxystart": "kubectl port-forward $(kubectl get pods -n squidproxy | awk '{print $1}' | grep squidproxy) 3128:3128 -n squidproxy" }, "dependencies": { - "@apollo/client": "^3.7.8", + "@apollo/client": "^3.7.15", "@dts-stn/service-canada-design-system": "^1.59.4", "@fortawesome/fontawesome-svg-core": "^6.2.0", "@fortawesome/free-regular-svg-icons": "^6.2.0", @@ -33,14 +33,14 @@ "@opentelemetry/api": "^1.3.0", "@opentelemetry/auto-instrumentations-node": "^0.36.0", "@opentelemetry/sdk-node": "^0.35.0", - "axios": "^1.3.4", + "axios": "^1.4.0", "babel-plugin-macros": "^3.1.0", "cross-env": "^7.0.3", "lodash.throttle": "^4.1.1", "markdown-to-jsx": "^7.2.0", "next": "^12.3.3", - "next-auth": "^4.20.1", - "next-i18next": "^13.0.3", + "next-auth": "^4.22.1", + "next-i18next": "^13.3.0", "prom-client": "^12.0.0", "prop-types": "^15.8.1", "react": "17.0.2", @@ -48,7 +48,7 @@ "react-focus-on": "^3.8.1", "react-idle-timer": "^5.6.2", "react-modal": "^3.16.1", - "release-please": "^15.7.0" + "release-please": "^15.11.0" }, "devDependencies": { "@babel/preset-react": "^7.18.6", @@ -59,8 +59,8 @@ "autoprefixer": "^10.4.2", "axe-core": "^4.3.3", "babel-jest": "^27.1.0", - "cypress": "^11.2.0", - "cypress-axe": "^1.1.0", + "cypress": "^12.15.0", + "cypress-axe": "^1.4.0", "cypress-multi-reporters": "^1.5.0", "eslint": "7.32.0", "eslint-config-next": "^12.2.5", diff --git a/pages/api/auth/[...nextauth].js b/pages/api/auth/[...nextauth].js index 0ee6b8159..407a5b855 100644 --- a/pages/api/auth/[...nextauth].js +++ b/pages/api/auth/[...nextauth].js @@ -70,6 +70,6 @@ export default NextAuth({ }, }, pages: { - signIn: '/auth/login', + signIn: '/auth/login/', }, }) diff --git a/pages/auth/login.js b/pages/auth/login.js index dd3b6b7a3..bf40edb15 100644 --- a/pages/auth/login.js +++ b/pages/auth/login.js @@ -1,29 +1,30 @@ import { useEffect } from 'react' import { useRouter } from 'next/router' import { signIn } from 'next-auth/react' +import { AuthIsDisabled } from '../../lib/auth' import { LoadingSpinner } from '@dts-stn/service-canada-design-system' -const bannerContent = { - bannerBoldText: '', - bannerText: '', - bannerLink: '', - bannerLinkHref: '', -} - -const Login = (props) => { +export default function Login(props) { const router = useRouter() //signIn('ecasProvider') useEffect(() => { if (!router.isReady) return if (!router.query.error) { + //If auth is disabled, redirect to dashboard without triggering signIn event, for testing purposes only + if (props.authDisabled) { + setTimeout(() => { + router.push('/my-dashboard') + }, 3000) + return + } signIn('ecasProvider', { callbackUrl: `${window.location.origin}/my-dashboard`, }) } - }, [router.isReady]) + }, [router.isReady, props.authDisabled, router]) return ( -
    +
    ) @@ -33,4 +34,13 @@ Login.getLayout = function PageLayout(page) { return <>{page} } -export default Login +export async function getServerSideProps({ req, res, locale }) { + //Temporary for testing purposes until auth flow is publicly accessible + const authDisabled = AuthIsDisabled() ? true : false + + return { + props: { + authDisabled: authDisabled ?? true, + }, + } +} diff --git a/pages/auth/logout.js b/pages/auth/logout.js index d82310d6e..f10dc272f 100644 --- a/pages/auth/logout.js +++ b/pages/auth/logout.js @@ -1,15 +1,20 @@ import { useEffect } from 'react' import { getLogoutURL, AuthIsDisabled } from '../../lib/auth' import { LoadingSpinner } from '@dts-stn/service-canada-design-system' +import { signOut } from 'next-auth/react' export default function Logout(props) { //Redirect to ECAS global sign out useEffect(() => { - window.location.replace(props.logoutURL) + const logout = async () => { + await signOut({ redirect: false }) + window.location.replace(props.logoutURL) + } + logout().catch(console.error) }, [props.logoutURL]) return ( -
    +
    ) @@ -30,8 +35,7 @@ export async function getServerSideProps({ req, res, locale }) { return { props: { - locale, - logoutURL: logoutURL, + logoutURL: logoutURL ?? '/', }, } } diff --git a/pages/my-dashboard.js b/pages/my-dashboard.js index edc80e12e..a217a0719 100644 --- a/pages/my-dashboard.js +++ b/pages/my-dashboard.js @@ -68,7 +68,7 @@ export default function MyDashboard(props) { > {tasks.map((taskList, index) => { return ( -
    +
    diff --git a/pages/profile.js b/pages/profile.js index 62ddd9e3a..899554b94 100644 --- a/pages/profile.js +++ b/pages/profile.js @@ -57,12 +57,14 @@ export default function Profile(props) { accessText={props.content.lookingFor.subText[0]} linkText={props.content.lookingFor.subText[1]} href={props.content.lookingFor.link} - linkID="link-id" + linkID={props.content.backToDashboard.id} dataCy="access-security-page-link" buttonHref={props.content.backToDashboard.btnLink} buttonId="back-to-dashboard-button" buttonLinkText={props.content.backToDashboard.btnText} refPageAA={props.aaPrefix} + dashId={t.id_dashboard} + linkId={props.content.lookingFor.id} >
    ) @@ -149,7 +151,7 @@ export async function getServerSideProps({ res, locale }) { bannerContent: locale === 'en' ? bannerContent.en : bannerContent.fr, popupContent: locale === 'en' ? popupContent.en : popupContent.fr, popupContentNA: locale === 'en' ? popupContentNA.en : popupContentNA.fr, - aaPrefix: `ESDC-EDSC:${content.en?.heading || content.en?.title}`, + aaPrefix: `ESDC-EDSC:${content.en?.pageName}`, popupStaySignedIn: locale === 'en' ? authModals.mappedPopupStaySignedIn.en diff --git a/pages/security-settings.js b/pages/security-settings.js index ddaac8096..0a02b3b61 100644 --- a/pages/security-settings.js +++ b/pages/security-settings.js @@ -29,7 +29,6 @@ export default function SecuritySettings(props) { window.removeEventListener('click', throttledOnClickEvent) } }, [throttledOnClickEvent]) - return (
    @@ -58,12 +57,14 @@ export default function SecuritySettings(props) { accessText={props.content.lookingFor.subText[0]} linkText={props.content.lookingFor.subText[1]} href={props.content.lookingFor.link} - linkID="link-id" + linkID={t.backToDashboard.id} dataCy="access-profile-page-link" buttonHref={t.url_dashboard} buttonId="back-to-dashboard-button" buttonLinkText={t.backToDashboard} refPageAA={props.aaPrefix} + dashId={t.id_dashboard} + linkId={props.content.lookingFor.id} >
    ) diff --git a/tailwind.config.js b/tailwind.config.js index b81864498..63ecbd6c4 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -59,6 +59,7 @@ module.exports = { '60b': '#335075', '60d': '#295376', '60f': '#0E62C9', + 'focus': '#1c578a', }, 'red': { light: '#B76565',