From 3b89e9f12ba7630bd85f425c657123c3f4c978db Mon Sep 17 00:00:00 2001 From: jostorey Date: Wed, 18 Oct 2023 09:04:27 -0700 Subject: [PATCH 01/17] Pushh to brach for purpose of debugging code with wkubo. Not to be merged with main. --- backend/package-lock.json | 4 +- backend/src/components/user.js | 250 ++----- backend/src/util/mapping/Mappings.js | 65 +- frontend/package-lock.json | 92 ++- frontend/src/App.vue | 4 +- .../images/login-header-img-resized.jpg | Bin 0 -> 135013 bytes frontend/src/common/apiService.js | 147 ++-- frontend/src/components/TheHeader.vue | 64 +- frontend/src/components/TheMenu.vue | 29 +- frontend/src/components/TheModalIdle.vue | 19 +- frontend/src/stores/auth.js | 23 +- frontend/src/utils/common.js | 278 +------ frontend/src/utils/constants.js | 507 +------------ frontend/src/views/HomeView.vue | 122 ++- frontend/src/views/LoginView.vue | 114 ++- frontend/src/views/UnAuthorizedView.vue | 8 +- frontend/yarn.lock | 694 ++++++++++++++---- 17 files changed, 1114 insertions(+), 1306 deletions(-) create mode 100644 frontend/src/assets/images/login-header-img-resized.jpg diff --git a/backend/package-lock.json b/backend/package-lock.json index 8021123d..a5c7c871 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -1,11 +1,11 @@ { - "name": "ccof-backend", + "name": "ofm-backend", "version": "0.0.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "ccof-backend", + "name": "ofm-backend", "version": "0.0.1", "license": "Apache-2.0", "dependencies": { diff --git a/backend/src/components/user.js b/backend/src/components/user.js index 1c12925e..a6bdc52f 100644 --- a/backend/src/components/user.js +++ b/backend/src/components/user.js @@ -1,236 +1,142 @@ -'use strict'; -const {getSessionUser, getHttpHeader, minify, getUserGuid, getUserName, getLabelFromValue, postOperation, isIdirUser, getOperation} = require('./utils'); -const config = require('../config/index'); -const ApiError = require('./error'); -const axios = require('axios'); -const HttpStatus = require('http-status-codes'); -const log = require('../components/logger'); -const { APPLICATION_STATUS_CODES, CCFRI_STATUS_CODES, ECEWE_STATUS_CODES, CCOF_STATUS_CODES, CCOF_APPLICATION_TYPES, ORGANIZATION_PROVIDER_TYPES, CHANGE_REQUEST_TYPES} = require('../util/constants'); -const { UserProfileFacilityMappings, UserProfileOrganizationMappings, UserProfileBaseFundingMappings, UserProfileApplicationMappings, UserProfileCCFRIMappings, UserProfileECEWEMappings /* lint error: , UserProfileChangeRequestNewFacilityMappings*/} = require('../util/mapping/Mappings'); - -const { MappableObjectForFront } = require('../util/mapping/MappableObject'); -const _ = require ('lodash'); - +'use strict' +const { getSessionUser, getUserName, getHttpHeader, minify, getUserGuid, isIdirUser } = require('./utils') +const config = require('../config/index') +const ApiError = require('./error') +const axios = require('axios') +const HttpStatus = require('http-status-codes') +const log = require('../components/logger') +// TODO... const { ORGANIZATION_PROVIDER_TYPES} = require('../util/constants') +const { UserProfileMappings, UserProfileOrganizationMappings, UserProfileFacilityPermissionMappings, UserProfileFacilityMappings } = require('../util/mapping/Mappings') + +const { MappableObjectForFront } = require('../util/mapping/MappableObject') +const _ = require('lodash') async function getUserInfo(req, res) { - - const userInfo = getSessionUser(req); + const userInfo = getSessionUser(req) if (!userInfo || !userInfo.jwt || !userInfo._json) { return res.status(HttpStatus.UNAUTHORIZED).json({ - message: 'No session data' - }); + message: 'No session data', + }) } - const isIdir = isIdirUser(req); - const queryUserName = req.params?.queryUserName; - const userName = getUserName(req); + const isIdir = isIdirUser(req) + const queryUserName = req.params?.queryUserName + const userName = getUserName(req) // if is idir user (ministry user), make sure they are a user in dynamics + // TODO commented out until we focus on IDIR login and weather this code is relevant if (isIdir) { - let response = await getDynamicsUserByEmail(req); + let response = await getDynamicsUserByEmail(req) if (response.value?.length > 0 && response.value[0].systemuserid) { - log.verbose(`Ministry user: [${req.session.passport.user._json.display_name}] logged in.`); + log.verbose(`Ministry user: [${req.session.passport.user._json.display_name}] logged in.`) } else { - log.info(`Ministry user: [${req.session.passport.user._json.display_name}] attempted to log in but is not part of Dynamics.`); + log.info(`Ministry user: [${req.session.passport.user._json.display_name}] attempted to log in but is not part of Dynamics.`) return res.status(HttpStatus.UNAUTHORIZED).json({ - message: 'Not Authorized' - }); + message: 'Not Authorized', + }) } } let resData = { - displayName: (queryUserName)? userName + '-' + queryUserName : userName, + // TODO i thing this has to do with impersonate... displayName: (queryUserName)? userName + '-' + queryUserName : userName, userName: userName, - email: req.session.passport.user._json.email, isMinistryUser: isIdir, serverTime: new Date(), //TODO: unreadMessages is hardcoded. Remove this with API values when built out! unreadMessages: false, - }; - let userResponse = undefined; + } + let userResponse = undefined if (isIdir) { if (queryUserName) { try { - log.info(`Ministry user [${userName}] is impersonating with username: [${queryUserName}].`); + log.info(`Ministry user [${userName}] is impersonating with username: [${queryUserName}].`) // dynamics api requires a userID. if userID not found then it wil use the query name // put a random userID so that we only search by queryname - userResponse = await getUserProfile(null, queryUserName); + userResponse = await getUserProfile(null, queryUserName) if (userResponse === null) { - return res.status(HttpStatus.NOT_FOUND).json({message: 'No user found with that BCeID UserName'}); + return res.status(HttpStatus.NOT_FOUND).json({ message: 'No user found with that BCeID UserName' }) } } catch (e) { - log.error('getUserProfile Error', e.response ? e.response.status : e.message); - throw new ApiError(HttpStatus.INTERNAL_SERVER_ERROR, {message: 'API Get error'}, e); + log.error('getUserProfile Error', e.response ? e.response.status : e.message) + throw new ApiError(HttpStatus.INTERNAL_SERVER_ERROR, { message: 'API Get error' }, e) } } else { //If not looking for a username, return from here since ministry staff should not have an account - return res.status(HttpStatus.OK).json(resData); + return res.status(HttpStatus.OK).json(resData) } } else { //Not an idir user, so just get the guid from the header - const userGuid = getUserGuid(req); - log.verbose('User Guid is: ', userGuid); - userResponse = await getUserProfile(userGuid, userName ); + const userGuid = getUserGuid(req) + log.verbose('User Guid is: ', userGuid) + userResponse = await getUserProfile(userGuid) } if (log.isVerboseEnabled) { - log.verbose('getUserProfile response:',minify(userResponse)); + log.verbose('getUserProfile response:', minify(userResponse)) } if (userResponse === null) { - creatUser(req); - return res.status(HttpStatus.OK).json(resData); - } - if (userResponse === {}){ - // If no data back, then no associated Organization/Facilities, return empty orgination data - return res.status(HttpStatus.OK).json(resData); + // If no data back, then no associated User Roles/Organization/Facilities/ + return res.status(HttpStatus.UNAUTHORIZED).json(resData) } - let organization = new MappableObjectForFront(userResponse, UserProfileOrganizationMappings).data; + let user = new MappableObjectForFront(userResponse, UserProfileMappings).data + delete user.roles - let application = new MappableObjectForFront(userResponse.application, UserProfileApplicationMappings).data; - application.organizationProviderType = getLabelFromValue(application.organizationProviderType, ORGANIZATION_PROVIDER_TYPES); - application.applicationStatus = getLabelFromValue(application.applicationStatus, APPLICATION_STATUS_CODES, 'NEW'); - application.applicationType = getLabelFromValue(application.applicationType, CCOF_APPLICATION_TYPES); - application.ccofProgramYearId = userResponse.application?.ccof_ProgramYear?.ccof_program_yearid; - application.ccofProgramYearName = userResponse.application?.ccof_ProgramYear?.ccof_name; - application.ccofApplicationStatus = getLabelFromValue(application.ccofStatus, CCOF_STATUS_CODES, 'NEW'); + let organization = new MappableObjectForFront(userResponse.organization, UserProfileOrganizationMappings).data + resData.facilityPermission = parseFacilityPermissions(userResponse) - - resData.facilityList = parseFacilityData(userResponse); let results = { ...resData, + ...user, ...organization, - ...application, - }; - return res.status(HttpStatus.OK).json(results); + } + log.verbose('getUserInfo response:', results) + return res.status(HttpStatus.OK).json(results) } -async function getUserProfile(userGuid, userName) { +async function getUserProfile(userGuid) { try { - let url = undefined; + let url = undefined if (userGuid) { - url = config.get('dynamicsApi:apiEndpoint') + `/api/ProviderProfile?userId=${userGuid}&userName=${userName}`; - } else { - url = config.get('dynamicsApi:apiEndpoint') + `/api/ProviderProfile?userName=${userName}`; + // Note for wkubo: switch to dynamic guid url below for testing unauthorized with bcedid ofmqa02... for now, until + // fixed request to 365 group has occured. + url = config.get('dynamicsApi:apiEndpoint') + '/api/ProviderProfile?userId=88888881' + //url = config.get('dynamicsApi:apiEndpoint') + `/api/ProviderProfile?userId=${userGuid}` } - - log.verbose('UserProfile Url is', url); - const response = await axios.get(url, getHttpHeader()); - return response.data; + log.verbose('UserProfile Url is', url) + let response = await axios.get(url, getHttpHeader()) + log.verbose('getUserProfile response:', response.data) + return response.data } catch (e) { if (e.response?.status == '404') { - log.verbose('response ', e.response.data); + log.verbose('response ', e.response.data) if (e.response?.data?.startsWith('User not found')) { - return null; + return null } - return {}; + return {} } - log.error('getUserProfile Error', e.response ? e.response.status : e.message); - throw e; + log.error('getUserProfile Error', e.response ? e.response.status : e.message) + throw e } } -function updateFacilityWithChangeRequestDetails(changeRequestList, returnValue, facilityId) { - for (const changeRequest of changeRequestList) { - //todo -mk check statuscode - let changeActionNewFacilityList = changeRequest?.ccof_change_action_change_request?.filter(item =>item.ccof_changetype === CHANGE_REQUEST_TYPES.NEW_FACILITY); - for (const changeActionNewFacility of changeActionNewFacilityList) { - let result = changeActionNewFacility?.ccof_change_request_new_facility_change_act.find(item => item['_ccof_facility_value'] === facilityId); - if (result) { - returnValue.changeRequestId = changeRequest?.ccof_change_requestid; - returnValue.unlockCcfri = result?.ccof_unlock_ccfri; - returnValue.unlockNmf = result?.ccof_unlock_nmf_rfi; - returnValue.unlockRfi = result?.ccof_unlock_rfi; - +function parseFacilityPermissions(userResponse) { + const facilityList = Object.entries(userResponse.facility_permission) + .map(([key, value]) => { + // Only add facilities that have portal access + if (value.ofm_portal_access === true) { + const facilityPermission = new MappableObjectForFront(value, UserProfileFacilityPermissionMappings).data + const facility = new MappableObjectForFront(value.facility, UserProfileFacilityMappings).data + const combinedData = { ...facilityPermission, ...facility } + if (!_.isEmpty(combinedData)) { + return combinedData + } } - } - } -} - -function parseFacilityData(userResponse) { - let facilityMap = new Map(userResponse.facilities?.map((m) => [m['accountid'], new MappableObjectForFront(m, UserProfileFacilityMappings).data])); - - if (userResponse.application) { - facilityMap.forEach((value, key, map) => { - let ccfriInfo = userResponse.application.ccof_applicationccfri_Application_ccof_ap?.find(item => item['_ccof_facility_value'] === key); - ccfriInfo = new MappableObjectForFront(ccfriInfo, UserProfileCCFRIMappings).data; - let eceweInfo = userResponse.application.ccof_ccof_application_ccof_applicationecewe_application?.find(item => item['_ccof_facility_value'] === key); - eceweInfo = new MappableObjectForFront(eceweInfo, UserProfileECEWEMappings).data; - let baseFunding = userResponse.application.ccof_application_basefunding_Application?.find(item => item['_ccof_facility_value'] === key); - baseFunding = new MappableObjectForFront(baseFunding, UserProfileBaseFundingMappings).data; - let changeRequestList = userResponse.application.ccof_ccof_change_request_Application_ccof_appl; - let returnValue = { - ...value, - ...ccfriInfo, - ...eceweInfo, - ...baseFunding, - }; - updateFacilityWithChangeRequestDetails(changeRequestList, returnValue, key); - map.set(key, returnValue); - }); - } - let facilityList = []; - facilityMap.forEach((facility) => { - if (!_.isEmpty(facility)) { - facility.ccofBaseFundingStatus = getLabelFromValue(facility.ccofBaseFundingStatus, CCOF_STATUS_CODES); - facility.ccfriStatus = getLabelFromValue(facility.ccfriStatus, CCFRI_STATUS_CODES, 'NOT STARTED'); - facility.eceweStatus = getLabelFromValue(facility.eceweStatus, ECEWE_STATUS_CODES, 'NOT STARTED'); - facilityList.push(facility); - } - }); - return facilityList; -} - -async function getDynamicsUserByEmail(req) { - let email = req.session.passport.user._json.email; - if (!email) { - //If for some reason, an email is not associated with the IDIR, just use IDR@gov.bc.ca - email = `${req.session.passport.user._json.idir_username}@gov.bc.ca`; - } - // eslint-disable-next-line quotes, - email.includes("'") ? email = email.replace("'", "''") : email; - try { - let response = await getOperation(`systemusers?$select=firstname,domainname,lastname&$filter=internalemailaddress eq '${email}'`); - return response; - } catch (e) { - log.error('getDynamicsUserByEmail Error', e.response ? e.response.status : e.message); - throw new ApiError(HttpStatus.INTERNAL_SERVER_ERROR, {message: 'API Get error'}, e); - } -} - -async function creatUser(req) { - log.info('No user found, creating BCeID User: ', getUserName(req)); - let given_name = req.session.passport.user._json.given_name; - let family_name = req.session.passport.user._json.family_name; - let firstname = undefined; - let lastname = undefined; - try { - if (!family_name && given_name && given_name.split(' ').length > 1) { - //If for some reason we don't have a last name from SSO, see if firstname has 2 words - firstname = given_name.split(' ').slice(0, -1).join(' '); - lastname = given_name.split(' ').slice(-1).join(' '); - } else if (!given_name && family_name && family_name.split(' ').length > 1) { - //If for some reason we don't have a firstname name from SSO, see if lastname has 2 words - firstname = family_name.split(' ').slice(0, -1).join(' '); - lastname = family_name.split(' ').slice(-1).join(' '); - } else { - firstname = given_name; - lastname = family_name; - } - - let payload = { - ccof_userid: getUserGuid(req), - firstname: firstname, - lastname: lastname, - emailaddress1: req.session.passport.user._json.email, - ccof_username: getUserName(req) - }; - postOperation('contacts', payload); - } catch (e) { - log.error('Error when creating user: ', e); - throw new ApiError(HttpStatus.INTERNAL_SERVER_ERROR, {message: 'Error while creating a new BCeID User'}, e); - } + return null + }) + .filter((facility) => facility !== null) + return facilityList } module.exports = { getUserInfo, -}; +} diff --git a/backend/src/util/mapping/Mappings.js b/backend/src/util/mapping/Mappings.js index 90664a02..9ad8ebe4 100644 --- a/backend/src/util/mapping/Mappings.js +++ b/backend/src/util/mapping/Mappings.js @@ -1,34 +1,39 @@ -const OrganizationMappings = [ - { back: 'ccof_facilitystartdate', front: 'yearBeganOperation' }, - { back: 'name', front: 'legalName' }, - { back: 'address1_name', front: 'address1' }, //Address - { back: 'address1_city', front: 'city1' }, - { back: 'address1_postalcode', front: 'postalCode1' }, - { back: 'address2_name', front: 'address2' }, //Mailing Address - { back: 'address2_city', front: 'city2' }, - { back: 'address2_postalcode', front: 'postalCode2' }, - { back: 'address1_primarycontactname', front: 'contactName' }, - { back: 'ccof_position', front: 'position' }, - { back: 'telephone1', front: 'phone' }, +const UserProfileMappings = [ + { back: 'contactid', front: 'contactId' }, + { back: 'ccof_userid', front: 'userId' }, + { back: 'ccof_username', front: 'username' }, { back: 'emailaddress1', front: 'email' }, - { back: 'ccof_instructionnumber', front: 'incNumber' },//incorporation number - { back: 'ccof_typeoforganization', front: 'organizationType' }, - { back: 'ccof_formcomplete', front: 'isOrganizationComplete' }, - { back: 'ccof_is_mailing_address_same', front: 'isSameAsMailing'} -]; + { back: 'ofm_first_name', front: 'firstName' }, + { back: 'ofm_last_name', front: 'lastName' }, + { back: 'ofm_portal_role', front: 'roles' }, +] -const ProgramYearMappings = [ - { back: 'ccof_program_yearid', front: 'programYearId' }, - { back: 'ccof_name', front: 'name' }, - { back: 'statuscode', front: 'status' }, - { back: 'ccof_programyearnumber', front: 'order' }, - { back: '_ccof_previousyear_value', front: 'previousYearId' }, - { back: 'ccof_intakeperiodstart', front: 'intakeStart' }, - { back: 'ccof_intakeperiodend', front: 'intakeEnd' }, - { back: 'ccof_declarationbstart', front: 'declarationbStart' }, -]; +const UserProfileOrganizationMappings = [ + { back: 'accountid', front: 'organizationId' }, + { back: 'accountnumber', front: 'organizationAccountNumber' }, + { back: 'ccof_accounttype', front: 'organizationAccountType' }, + { back: 'name', front: 'organizationName' }, + { back: 'statecode', front: 'organizationStateCode' }, + { back: 'statuscode', front: 'organizationStatus' }, +] + +const UserProfileFacilityPermissionMappings = [ + { back: 'statecode', front: 'stateCode' }, + { back: 'statuscode', front: 'statusCode' }, +] + +const UserProfileFacilityMappings = [ + { back: 'accountid', front: 'facilityId' }, + { back: 'accountnumber', front: 'facilityAccountNumber' }, + { back: 'name', front: 'facilityName' }, + { back: 'ccof_accounttype', front: 'facilityType' }, + { back: 'statecode', front: 'facilityStateCode' }, + { back: 'statuscode', front: 'facilityStatusCode' }, +] module.exports = { - OrganizationMappings, - ProgramYearMappings -}; + UserProfileMappings, + UserProfileOrganizationMappings, + UserProfileFacilityPermissionMappings, + UserProfileFacilityMappings, +} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 000f6e4a..3d34d0c6 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11,7 +11,6 @@ "@bcgov/bc-sans": "^2.0.0", "@js-joda/core": "^5.5.3", "axios": "^1.4.0", - "happy-dom": "^12.8.0", "http-status-codes": "^2.2.0", "lodash": "^4.17.21", "moment": "^2.29.4", @@ -27,12 +26,14 @@ }, "devDependencies": { "@mdi/font": "^7.2.96", + "@pinia/testing": "^0.1.3", "@rushstack/eslint-patch": "^1.3.2", "@vitejs/plugin-vue": "^4.3.1", "@vue/test-utils": "^2.4.1", "eslint": "^8.46.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-vue": "^9.16.1", + "happy-dom": "^12.8.0", "prettier": "^3.0.0", "vite": "^4.4.9", "vitest": "^0.34.6" @@ -625,6 +626,47 @@ "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", "dev": true }, + "node_modules/@pinia/testing": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@pinia/testing/-/testing-0.1.3.tgz", + "integrity": "sha512-D2Ds2s69kKFaRf2KCcP1NhNZEg5+we59aRyQalwRm7ygWfLM25nDH66267U3hNvRUOTx8ofL24GzodZkOmB5xw==", + "dev": true, + "dependencies": { + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "pinia": ">=2.1.5" + } + }, + "node_modules/@pinia/testing/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/@rushstack/eslint-patch": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz", @@ -1514,7 +1556,8 @@ "node_modules/css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true }, "node_modules/cssesc": { "version": "3.0.0", @@ -1671,6 +1714,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, "engines": { "node": ">=0.12" }, @@ -2158,6 +2202,7 @@ "version": "12.8.0", "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-12.8.0.tgz", "integrity": "sha512-ReeZgCPuebuH1sc7NcTthMIyQVEb1NJyvs+p1gOHC1LwccIAKPWyRTNVmKhfyW5ft1Di+sPsOCuVFulF5IeVxw==", + "dev": true, "dependencies": { "css.escape": "^1.5.1", "entities": "^4.5.0", @@ -2184,6 +2229,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -3206,7 +3252,8 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/sass": { "version": "1.66.1", @@ -3900,6 +3947,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, "engines": { "node": ">=12" } @@ -3986,6 +4034,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, "dependencies": { "iconv-lite": "0.6.3" }, @@ -3997,6 +4046,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, "engines": { "node": ">=12" } @@ -4398,6 +4448,24 @@ "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", "dev": true }, + "@pinia/testing": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@pinia/testing/-/testing-0.1.3.tgz", + "integrity": "sha512-D2Ds2s69kKFaRf2KCcP1NhNZEg5+we59aRyQalwRm7ygWfLM25nDH66267U3hNvRUOTx8ofL24GzodZkOmB5xw==", + "dev": true, + "requires": { + "vue-demi": ">=0.14.5" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "dev": true, + "requires": {} + } + } + }, "@rushstack/eslint-patch": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz", @@ -5124,7 +5192,8 @@ "css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true }, "cssesc": { "version": "3.0.0", @@ -5238,7 +5307,8 @@ "entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true }, "es-module-lexer": { "version": "1.3.0", @@ -5588,6 +5658,7 @@ "version": "12.8.0", "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-12.8.0.tgz", "integrity": "sha512-ReeZgCPuebuH1sc7NcTthMIyQVEb1NJyvs+p1gOHC1LwccIAKPWyRTNVmKhfyW5ft1Di+sPsOCuVFulF5IeVxw==", + "dev": true, "requires": { "css.escape": "^1.5.1", "entities": "^4.5.0", @@ -5611,6 +5682,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -6316,7 +6388,8 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "sass": { "version": "1.66.1", @@ -6709,7 +6782,8 @@ "webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true }, "webpack": { "version": "5.88.2", @@ -6771,6 +6845,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, "requires": { "iconv-lite": "0.6.3" } @@ -6778,7 +6853,8 @@ "whatwg-mimetype": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true }, "which": { "version": "2.0.2", diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 4d9439a0..769bb993 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -62,7 +62,7 @@ export default { async created() { //this.setLoading(true); this.getJwtToken() - .then(() => Promise.all([this.getConfig()])) + //TODO commented out during sprint 1, might need in later sprint...then(() => Promise.all([this.getConfig()])) .catch((e) => { if (!e.response || e.response.status !== HttpStatus.UNAUTHORIZED) { this.logout() @@ -103,6 +103,7 @@ export default { #toTopBtn { opacity: 0.5; } + #toTopBtn:hover { opacity: 1; } @@ -138,6 +139,7 @@ html { .v-alert .v-icon { padding-left: 0; } + .full-height { height: 100%; } diff --git a/frontend/src/assets/images/login-header-img-resized.jpg b/frontend/src/assets/images/login-header-img-resized.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3ce0ed06c753f0038c2d3fd90862e0cee8e4df5 GIT binary patch literal 135013 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 z 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�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 literal 0 HcmV?d00001 diff --git a/frontend/src/common/apiService.js b/frontend/src/common/apiService.js index 8e86ce15..45346ef3 100644 --- a/frontend/src/common/apiService.js +++ b/frontend/src/common/apiService.js @@ -1,59 +1,62 @@ -import axios from 'axios'; -import {Routes} from '@/utils/constants'; -import AuthService from '@/common/authService'; +import AuthService from '@/common/authService' +import { Routes } from '@/utils/constants' +import axios from 'axios' // Buffer concurrent requests while refresh token is being acquired -let failedQueue = []; +let failedQueue = [] function processQueue(error, token = null) { - failedQueue.forEach(prom => { + failedQueue.forEach((prom) => { if (error) { - prom.reject(error); + prom.reject(error) } else { - prom.resolve(token); + prom.resolve(token) } - }); + }) - failedQueue = []; + failedQueue = [] } // Create new non-global axios instance and intercept strategy -const apiAxios = axios.create(); -const intercept = apiAxios.interceptors.response.use(config => config, error => { - const originalRequest = error.config; - if (error.response.status !== 401) { - return Promise.reject(error); - } - axios.interceptors.response.eject(intercept); - return new Promise((resolve, reject) => { - AuthService.refreshAuthToken(localStorage.getItem('jwtToken')) - .then(response => { - if (response.jwtFrontend) { - localStorage.setItem('jwtToken', response.jwtFrontend); - apiAxios.defaults.headers.common['Authorization'] = `Bearer ${response.jwtFrontend}`; - originalRequest.headers['Authorization'] = `Bearer ${response.jwtFrontend}`; - } - processQueue(null, response.jwtFrontend); - resolve(axios(originalRequest)); - }) - .catch(e => { - processQueue(e, null); - localStorage.removeItem('jwtToken'); - window.location = '/token-expired'; - reject(e); - }); - }); -}); +const apiAxios = axios.create() +const intercept = apiAxios.interceptors.response.use( + (config) => config, + (error) => { + const originalRequest = error.config + if (error.response.status !== 401) { + return Promise.reject(error) + } + axios.interceptors.response.eject(intercept) + return new Promise((resolve, reject) => { + AuthService.refreshAuthToken(localStorage.getItem('jwtToken')) + .then((response) => { + if (response.jwtFrontend) { + localStorage.setItem('jwtToken', response.jwtFrontend) + apiAxios.defaults.headers.common['Authorization'] = `Bearer ${response.jwtFrontend}` + originalRequest.headers['Authorization'] = `Bearer ${response.jwtFrontend}` + } + processQueue(null, response.jwtFrontend) + resolve(axios(originalRequest)) + }) + .catch((e) => { + processQueue(e, null) + localStorage.removeItem('jwtToken') + window.location = '/token-expired' + reject(e) + }) + }) + }, +) function getCodes(url) { return async function getCodesHandler(query) { try { - return await apiAxios.get(url, query); + return await apiAxios.get(url, query) } catch (e) { - console.log(`Failed to get from Nodejs API - ${e}`); - throw e; + console.log(`Failed to get from Nodejs API - ${e}`) + throw e } - }; + } } export default { @@ -65,66 +68,22 @@ export default { //Adds required headers to the Auth request setAuthHeader(token) { if (token) { - apiAxios.defaults.headers.common['Authorization'] = `Bearer ${token}`; + apiAxios.defaults.headers.common['Authorization'] = `Bearer ${token}` } else { - delete apiAxios.defaults.headers.common['Authorization']; + delete apiAxios.defaults.headers.common['Authorization'] } }, - getGenderCodes: getCodes(Routes.student.GENDER_CODE_URL), - getDemogCodes: getCodes(Routes.student.DEMOG_CODE_URL), - getStatusCodes: getCodes(Routes.student.STATUS_CODE_URL), - getGradeCodes: getCodes(Routes.student.GRADE_CODE_URL), - getDocumentTypeCodesFromStudentApi: getCodes(Routes.student.DOC_TYPE_CODES_URL), - getPossibleMatchReasonCodes: getCodes(Routes.penMatch.POSSIBLE_MATCH_REASON_CODES), - getHistoryActivityCodes: getCodes(Routes.student.HISTORY_ACTIVITY_CODE_URL), - getPenRequestBatchStudentStatusCodes: getCodes(Routes.penRequestBatch.STUDENT_STATUS_CODE_URL), - getPenRequestBatchStudentInfoMacroCodes: getCodes(Routes.penRequestBatch.STUDENT_INFO_MACROS_URL), - getPrbValidationFieldCodes: getCodes(Routes.penRequestBatch.PRB_VALIDATION_FIELD_CODE_URL), - getPrbValidationIssueSeverityCodes: getCodes(Routes.penRequestBatch.PRB_VALIDATION_ISSUE_SEVERITY_CODE_URL), - getPrbValidationIssueTypeCodes: getCodes(Routes.penRequestBatch.PRB_VALIDATION_ISSUE_TYPE_CODE_URL), - getMincodeSchoolNames: getCodes(Routes.cache.SCHOOL_DATA_URL), - getActiveSchools: getCodes(`${Routes.cache.SCHOOL_DATA_URL}?active=true`), - getActiveDistricts: getCodes(`${Routes.cache.DISTRICT_DATA_URL}?active=true`), - getSchools:getCodes(Routes.cache.SCHOOL_DATA_URL), - getDistricts:getCodes(Routes.cache.DISTRICT_DATA_URL), - getAuthorities:getCodes(Routes.cache.AUTHORITY_DATA_URL), - getActiveAuthorities:getCodes(`${Routes.cache.AUTHORITY_DATA_URL}?active=true`), - getFedProvSchoolCodes: getCodes(`${Routes.SCHOOL_DATA_URL}/fedProvSchoolCodes`), - getExchangeStatuses: getCodes(`${Routes.edx.STATUSES_URL}`), - getMinistryTeams: getCodes(`${Routes.edx.USERS_URL}/ministryTeams`), - getValidSchoolIDsForMessaging: getCodes(Routes.edx.VALID_USERS_FOR_MESSAGING), - getValidDistrictIDsForMessaging: getCodes(Routes.edx.VALID_DISTRICT_USERS_FOR_MESSAGING), - getEdxRoles: getCodes(`${Routes.edx.USERS_URL}/roles`), - getFileRequirements: getCodes(Routes.edx.EXCHANGE_FILE_REQUIREMENTS_URL), - getFacilityTypeCodes: getCodes(Routes.cache.FACILITY_TYPES_URL), - getSchoolCategoryTypeCodes: getCodes(Routes.cache.SCHOOL_CATEGORY_TYPES_URL), - getSchoolOrganizationTypeCodes: getCodes(Routes.cache.SCHOOL_ORGANIZATION_TYPES_URL), - getSchoolReportingRequirementTypeCodes: getCodes( - Routes.cache.SCHOOL_REPORTING_REQUIREMENT_TYPES_URL - ), - getSchoolNeighborhoodLearningCodes: getCodes(Routes.cache.SCHOOL_NEIGHBORHOOD_LEARNING_TYPES_URL), - getAuthorityTypeCodes: getCodes(Routes.cache.AUTHORITY_TYPES_URL), - getInstituteGradeCodes: getCodes(Routes.cache.GRADE_TYPES_URL), - getInstituteProvinceCodes: getCodes(Routes.cache.PROVINCES_URL), - getInstituteCountryCodes: getCodes(Routes.cache.COUNTRIES_URL), - getSchoolApiMincodeSchoolNames: getCodes(Routes.SCHOOL_DATA_URL), - getSchoolCategoryFacilityTypes: getCodes(Routes.cache.SCHOOL_CATEGORY_FACILITY_TYPE_URL), - getAllActiveFacilityTypeCodes: getCodes(`${Routes.cache.FACILITY_TYPES_URL}?active=true`), - getAllActiveSchoolCategoryTypeCodes: getCodes(`${Routes.cache.SCHOOL_CATEGORY_TYPES_URL}?active=true`), - getAllActiveSchoolOrganizationTypeCodes: getCodes(`${Routes.cache.SCHOOL_ORGANIZATION_TYPES_URL}?active=true`), - getAllActiveSchoolNeighborhoodLearningCodes: getCodes(`${Routes.cache.SCHOOL_NEIGHBORHOOD_LEARNING_TYPES_URL}?active=true`), - getAllActiveAuthorityTypeCodes: getCodes(`${Routes.cache.AUTHORITY_TYPES_URL}?active=true`), - getAllActiveInstituteGradeCodes: getCodes(`${Routes.cache.GRADE_TYPES_URL}?active=true`), - getAllActiveInstituteProvinceCodes: getCodes(`${Routes.cache.PROVINCES_URL}?active=true`), - getAllActiveInstituteCountryCodes: getCodes(`${Routes.cache.COUNTRIES_URL}?active=true`), - getAllFundingGroups: getCodes(`${Routes.sdc.FUNDING_DATA_URL}`), + // TODO jstorey not sure if we are going to want to get codes this way... + //getAllActiveInstituteProvinceCodes: getCodes(`${Routes.cache.PROVINCES_URL}?active=true`), + //getAllActiveInstituteCountryCodes: getCodes(`${Routes.cache.COUNTRIES_URL}?active=true`), + async getConfig() { try { - const response = await apiAxios.get(Routes.CONFIG); - return response; + const response = await apiAxios.get(Routes.CONFIG) + return response } catch (e) { - console.log(`Failed to do get from Nodejs getConfig API - ${e}`); - throw e; + console.log(`Failed to do get from Nodejs getConfig API - ${e}`) + throw e } }, -}; +} diff --git a/frontend/src/components/TheHeader.vue b/frontend/src/components/TheHeader.vue index d7100f59..ae443c67 100644 --- a/frontend/src/components/TheHeader.vue +++ b/frontend/src/components/TheHeader.vue @@ -16,18 +16,19 @@
- - + @@ -45,6 +46,7 @@ import { mapActions, mapState } from 'pinia' import { Routes } from '@/utils/constants' import { useAuthStore } from '@/stores/auth' +import router from '@/router' export default { data() { @@ -54,11 +56,49 @@ export default { } }, created() { - useAuthStore() - .getUserInfo() - .then(() => { - this.user = this.userInfo - }) + //Note for wkubo: this won't work... it will run on LoginVue and we can't use this.$route.name to check if we are on home + /* useAuthStore() + .getUserInfo() + .then(() => { + this.user = this.userInfo + }) + .catch((e) => { + if (e.response.status === 401) { + router.push('/unauthorized'); + } + }); */ + }, + watch: { + $route(to, from) { + console.log('Current Route Name:', this.$route.name); + if (this.$route.name === 'home') { + useAuthStore() + .getUserInfo() + .then((userInfo) => { + //Note for wkubo: not sure why this.user ends up as undefined and thus user header icon won't appear. Doesn't happen + // when this similar logic in 'created' hook. + this.user = userInfo; + }) + .catch((e) => { + if (e.response.status === 401) { + router.push('/unauthorized'); + } + }); + } + }, + /* isAuthenticated(newVal, oldVal) { + console.log('jstorey = ' + this.$route.name) + if (newVal) { + useAuthStore() + .getUserInfo() + .then((userInfo) => { + this.user = userInfo; + }) + .catch((e) => { + router.push('/unauthorized'); + }); + } + }, */ }, computed: { ...mapState(useAuthStore, ['userInfo', 'isAuthenticated']), @@ -135,10 +175,12 @@ a { .v-chip .v-chip__content { padding-right: 12px; } + .v-chip .v-chip__content:hover { background: rgba(255, 255, 255, 0.05); border-radius: 15px; } + .v-chip .v-chip__content:active { background: rgba(255, 255, 255, 0.5); } @@ -173,4 +215,4 @@ a { display: none; } } - + \ No newline at end of file diff --git a/frontend/src/components/TheMenu.vue b/frontend/src/components/TheMenu.vue index 881c76bc..043f25be 100644 --- a/frontend/src/components/TheMenu.vue +++ b/frontend/src/components/TheMenu.vue @@ -1,23 +1,28 @@ + + \ No newline at end of file diff --git a/frontend/src/views/LoginView.vue b/frontend/src/views/LoginView.vue index 5f3f2241..967918f5 100644 --- a/frontend/src/views/LoginView.vue +++ b/frontend/src/views/LoginView.vue @@ -3,37 +3,85 @@ - - - - - + + + + Early Childhood Care - Operating + Funding Model +
+ Welcome +
+
+ + +

+ NOTE: + The information collected through Early Childhood Care - Operating Funding Model is collected under the authority + of the + Freedom of Information and Protection of Privacy Act + (FOIPPA) and the + Child Care BC Act + (SBC 2001, c. 4) and will be used for the purpose of administering the Child Care Operating Funding Program, which + includes the Child Care Fee Reduction Initiative and the Early Childhood + Educator (ECE) Wage Enhancement for successfully enrolled applicants. Personal information is protected from + unauthorized use and disclosure in accordance with FOIPPA. Any questions or + concerns about the collection of this information can be directed to the Director, Child Care Operating Funding + Program, PO Box 9965 Stn Prov Govt, Victoria BC V8W 9R4, Phone: in Greater + Victoria: 250 356-6501, outside of Greater Victoria, Toll Free: 1 888 338-6622 (option 2). +

+
+ + + + + + +

Childcare Provider

+
+ Log in with your primary Business BCeID + + + + + BCeID Log In + mdi-login + + + +
+
+ + + + + +

Don't have a BCeID?

+
+ + BCeID is a user ID and password. You can use it to log into many participating government services. +
+
+ If you have logged into other B.C. government services before, you may already have an account. +
+
+ You must register for a Business BCeID before you can log in - it only takes a few minutes. +
+ + + + Register for a BCeID + mdi-login + + + +
+
+
+
@@ -44,10 +92,10 @@ import { Routes } from '@/utils/constants' import { useAuthStore } from '@/stores/auth' export default { - name: 'Login', + name: 'LoginView', data() { return { - routes: Routes, + routes: Routes } }, computed: { @@ -89,4 +137,8 @@ export default { .full-height { height: 100%; } + +.containerWidth1450 { + max-width: 1450px; +} diff --git a/frontend/src/views/UnAuthorizedView.vue b/frontend/src/views/UnAuthorizedView.vue index 58608ef1..a7a2aae5 100644 --- a/frontend/src/views/UnAuthorizedView.vue +++ b/frontend/src/views/UnAuthorizedView.vue @@ -1,5 +1,5 @@