diff --git a/README.md b/README.md index fddfd4c0e5..f6d9930baa 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,7 @@ Our public-facing live services were last audited by the [Digital Accessibility ### Security -Our whole stack was last assessed by [Jumpsec](https://www.jumpsec.com/) on 27th July 2022. Their penetration test concluded that our infrastructure and application environments are securely configured to follow best practices. We have since additionally resolved a handful of low- and informational-risk issues uncovered during the assessment to maintain a high standard of security. +Our whole stack was last assessed by [Jumpsec](https://www.jumpsec.com/) between the 21st and 30th November 2023. JUMPSEC then performed a retest of the issues identified in the initial test on the 8th of February 2024. This included verifying that fixes had been successfully applied and that no further risks were introduced as a result of the remediation work carried out. Their penetration test concluded that - "the security posture of PlanX was strong, and following industry best practices. JUMPSEC commend the PlanX team on their dedication to security and ability to both maintain and mitigate issues in a responsible and timely manner". ## Related packages diff --git a/api.planx.uk/helpers.ts b/api.planx.uk/helpers.ts index 624fa5169b..0813bcbbb5 100644 --- a/api.planx.uk/helpers.ts +++ b/api.planx.uk/helpers.ts @@ -234,9 +234,7 @@ const makeUniqueFlow = ( }; const isLiveEnv = () => - ["production", "staging", "pizza", "sandbox"].includes( - process.env.NODE_ENV || "", - ); + ["production", "staging", "pizza"].includes(process.env.NODE_ENV || ""); /** * Get current environment, formatted for display diff --git a/api.planx.uk/package.json b/api.planx.uk/package.json index a1dac0ac9a..3ef7e66b86 100644 --- a/api.planx.uk/package.json +++ b/api.planx.uk/package.json @@ -4,7 +4,7 @@ "private": true, "dependencies": { "@airbrake/node": "^2.1.8", - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#1959a5d", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#b184ea9", "@types/isomorphic-fetch": "^0.0.36", "adm-zip": "^0.5.10", "aws-sdk": "^2.1467.0", diff --git a/api.planx.uk/pnpm-lock.yaml b/api.planx.uk/pnpm-lock.yaml index e3d40c884f..4f528cb4f4 100644 --- a/api.planx.uk/pnpm-lock.yaml +++ b/api.planx.uk/pnpm-lock.yaml @@ -12,8 +12,8 @@ dependencies: specifier: ^2.1.8 version: 2.1.8 '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#1959a5d - version: github.com/theopensystemslab/planx-core/1959a5d + specifier: git+https://github.com/theopensystemslab/planx-core#b184ea9 + version: github.com/theopensystemslab/planx-core/b184ea9 '@types/isomorphic-fetch': specifier: ^0.0.36 version: 0.0.36 @@ -6655,6 +6655,13 @@ packages: resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} engines: {node: '>=14'} hasBin: true + dev: true + + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: false /pretty-format@23.6.0: resolution: {integrity: sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==} @@ -7855,13 +7862,13 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@4.6.0: - resolution: {integrity: sha512-rLjWJzQFOq4xw7MgJrCZ6T1jIOvvYElXT12r+y0CC6u67hegDHaxcPqb2fZHOGlqxugGQPNB1EnTezjBetkwkw==} + /type-fest@4.10.2: + resolution: {integrity: sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==} engines: {node: '>=16'} dev: false - /type-fest@4.9.0: - resolution: {integrity: sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==} + /type-fest@4.6.0: + resolution: {integrity: sha512-rLjWJzQFOq4xw7MgJrCZ6T1jIOvvYElXT12r+y0CC6u67hegDHaxcPqb2fZHOGlqxugGQPNB1EnTezjBetkwkw==} engines: {node: '>=16'} dev: false @@ -8285,8 +8292,8 @@ packages: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false - github.com/theopensystemslab/planx-core/1959a5d: - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/1959a5d} + github.com/theopensystemslab/planx-core/b184ea9: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/b184ea9} name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -8308,10 +8315,10 @@ packages: json-schema-to-typescript: 13.1.2 lodash: 4.17.21 marked: 11.2.0 - prettier: 3.2.4 + prettier: 3.2.5 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - type-fest: 4.9.0 + type-fest: 4.10.2 uuid: 9.0.1 zod: 3.22.4 transitivePeerDependencies: diff --git a/doc/how-to/how-to-setup-aws-sso-credentials.md b/doc/how-to/how-to-setup-aws-sso-credentials.md index ec00169c50..7cf3aae254 100644 --- a/doc/how-to/how-to-setup-aws-sso-credentials.md +++ b/doc/how-to/how-to-setup-aws-sso-credentials.md @@ -7,7 +7,7 @@ As part of onboarding, you should be set up to access AWS via [the SSO portal](h 1. Download the AWS CLI 1. Run `aws configure sso` - the required details can be found via the SSO portal 1. For the "profile" field please use the format `planx-`, e.g. `planx-staging` -1. Repeat for all environments (sandbox, staging, production) +1. Repeat for all environments (staging, production) 1. Test! You should be able to call commands using the CLI, for example `aws sts get-caller-identity --profile planx-staging` and get the expected result. Occasionally, you'll be prompted to refresh your credentials, this can be done via `aws sso login --profile ` \ No newline at end of file diff --git a/doc/how-to/how-to-setup-planning-constraints.md b/doc/how-to/how-to-setup-planning-constraints.md index 7d6b440dc6..e5190a3f60 100644 --- a/doc/how-to/how-to-setup-planning-constraints.md +++ b/doc/how-to/how-to-setup-planning-constraints.md @@ -8,7 +8,7 @@ Our /gis API sets the passport variable `article4` by default for _any_ entities ## Process ⚙️ 1. **Council** - Shares & publishes their data on planning.data.gov.uk -2. **Planx** - Updates `teams.settings` jsonb database record on production with `{ "hasPlanningData": true }` to enable queries. This will automatically sync to staging on the next scheduled Github Action run, or you can kick it off manually. +2. **Planx** - Updates `team_integrations.has_planning_data` record on production with `true` to enable queries. This will automatically sync to staging on the next scheduled Github Action run, or you can kick it off manually. (Note that it's common for councils to be ready to complete steps 1 & 2 well before steps 3-5; that's completely okay for testing, but all steps should be completed before a service "goes live".) diff --git a/e2e/tests/api-driven/package.json b/e2e/tests/api-driven/package.json index a9fc98c836..49905f511e 100644 --- a/e2e/tests/api-driven/package.json +++ b/e2e/tests/api-driven/package.json @@ -6,7 +6,7 @@ }, "dependencies": { "@cucumber/cucumber": "^9.3.0", - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#1959a5d", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#b184ea9", "axios": "^1.6.0", "dotenv": "^16.3.1", "dotenv-expand": "^10.0.0", diff --git a/e2e/tests/api-driven/pnpm-lock.yaml b/e2e/tests/api-driven/pnpm-lock.yaml index 4fc35eb756..35b14c8e55 100644 --- a/e2e/tests/api-driven/pnpm-lock.yaml +++ b/e2e/tests/api-driven/pnpm-lock.yaml @@ -9,8 +9,8 @@ dependencies: specifier: ^9.3.0 version: 9.3.0 '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#1959a5d - version: github.com/theopensystemslab/planx-core/1959a5d + specifier: git+https://github.com/theopensystemslab/planx-core#b184ea9 + version: github.com/theopensystemslab/planx-core/b184ea9 axios: specifier: ^1.6.0 version: 1.6.5 @@ -2171,8 +2171,8 @@ packages: hasBin: true dev: false - /prettier@3.2.4: - resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true dev: false @@ -2597,8 +2597,8 @@ packages: engines: {node: '>=10'} dev: false - /type-fest@4.9.0: - resolution: {integrity: sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==} + /type-fest@4.10.2: + resolution: {integrity: sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==} engines: {node: '>=16'} dev: false @@ -2781,8 +2781,8 @@ packages: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false - github.com/theopensystemslab/planx-core/1959a5d: - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/1959a5d} + github.com/theopensystemslab/planx-core/b184ea9: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/b184ea9} name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -2804,10 +2804,10 @@ packages: json-schema-to-typescript: 13.1.2 lodash: 4.17.21 marked: 11.2.0 - prettier: 3.2.4 + prettier: 3.2.5 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - type-fest: 4.9.0 + type-fest: 4.10.2 uuid: 9.0.1 zod: 3.22.4 transitivePeerDependencies: diff --git a/e2e/tests/ui-driven/package.json b/e2e/tests/ui-driven/package.json index 0a987464aa..300fe44902 100644 --- a/e2e/tests/ui-driven/package.json +++ b/e2e/tests/ui-driven/package.json @@ -8,7 +8,7 @@ "postinstall": "./install-dependencies.sh" }, "dependencies": { - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#1959a5d", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#b184ea9", "axios": "^1.6.2", "dotenv": "^16.3.1", "eslint": "^8.56.0", diff --git a/e2e/tests/ui-driven/pnpm-lock.yaml b/e2e/tests/ui-driven/pnpm-lock.yaml index c1649d7edc..6b35d7c502 100644 --- a/e2e/tests/ui-driven/pnpm-lock.yaml +++ b/e2e/tests/ui-driven/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#1959a5d - version: github.com/theopensystemslab/planx-core/1959a5d + specifier: git+https://github.com/theopensystemslab/planx-core#b184ea9 + version: github.com/theopensystemslab/planx-core/b184ea9 axios: specifier: ^1.6.2 version: 1.6.5 @@ -1997,8 +1997,8 @@ packages: hasBin: true dev: false - /prettier@3.2.4: - resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true dev: false @@ -2378,8 +2378,8 @@ packages: engines: {node: '>=12.20'} dev: false - /type-fest@4.9.0: - resolution: {integrity: sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==} + /type-fest@4.10.2: + resolution: {integrity: sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==} engines: {node: '>=16'} dev: false @@ -2528,8 +2528,8 @@ packages: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} dev: false - github.com/theopensystemslab/planx-core/1959a5d: - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/1959a5d} + github.com/theopensystemslab/planx-core/b184ea9: + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/b184ea9} name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -2551,10 +2551,10 @@ packages: json-schema-to-typescript: 13.1.2 lodash: 4.17.21 marked: 11.2.0 - prettier: 3.2.4 + prettier: 3.2.5 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - type-fest: 4.9.0 + type-fest: 4.10.2 uuid: 9.0.1 zod: 3.22.4 transitivePeerDependencies: diff --git a/editor.planx.uk/package.json b/editor.planx.uk/package.json index cb3dbdbff1..bcf762cc02 100644 --- a/editor.planx.uk/package.json +++ b/editor.planx.uk/package.json @@ -14,7 +14,7 @@ "@mui/styles": "^5.15.2", "@mui/utils": "^5.15.2", "@opensystemslab/map": "^0.8.0", - "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#1959a5d", + "@opensystemslab/planx-core": "git+https://github.com/theopensystemslab/planx-core#b184ea9", "@tiptap/core": "^2.0.3", "@tiptap/extension-bold": "^2.0.3", "@tiptap/extension-bubble-menu": "^2.1.13", diff --git a/editor.planx.uk/pnpm-lock.yaml b/editor.planx.uk/pnpm-lock.yaml index 13be59a64f..0b83043602 100644 --- a/editor.planx.uk/pnpm-lock.yaml +++ b/editor.planx.uk/pnpm-lock.yaml @@ -46,8 +46,8 @@ dependencies: specifier: ^0.8.0 version: 0.8.0 '@opensystemslab/planx-core': - specifier: git+https://github.com/theopensystemslab/planx-core#1959a5d - version: github.com/theopensystemslab/planx-core/1959a5d(@types/react@18.2.45) + specifier: git+https://github.com/theopensystemslab/planx-core#b184ea9 + version: github.com/theopensystemslab/planx-core/b184ea9(@types/react@18.2.45) '@tiptap/core': specifier: ^2.0.3 version: 2.0.3(@tiptap/pm@2.0.3) @@ -16966,8 +16966,8 @@ packages: hasBin: true dev: true - /prettier@3.2.4: - resolution: {integrity: sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true dev: false @@ -19915,6 +19915,11 @@ packages: engines: {node: '>=16'} dev: false + /type-fest@4.10.2: + resolution: {integrity: sha512-anpAG63wSpdEbLwOqH8L84urkL6PiVIov3EMmgIhhThevh9aiMQov+6Btx0wldNcvm4wV+e2/Rt1QdDwKHFbHw==} + engines: {node: '>=16'} + dev: false + /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -21074,9 +21079,9 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false - github.com/theopensystemslab/planx-core/1959a5d(@types/react@18.2.45): - resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/1959a5d} - id: github.com/theopensystemslab/planx-core/1959a5d + github.com/theopensystemslab/planx-core/b184ea9(@types/react@18.2.45): + resolution: {tarball: https://codeload.github.com/theopensystemslab/planx-core/tar.gz/b184ea9} + id: github.com/theopensystemslab/planx-core/b184ea9 name: '@opensystemslab/planx-core' version: 1.0.0 prepare: true @@ -21098,10 +21103,10 @@ packages: json-schema-to-typescript: 13.1.2 lodash: 4.17.21 marked: 11.2.0 - prettier: 3.2.4 + prettier: 3.2.5 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - type-fest: 4.10.0 + type-fest: 4.10.2 uuid: 9.0.1 zod: 3.22.4 transitivePeerDependencies: diff --git a/editor.planx.uk/src/@planx/components/PlanningConstraints/Public.tsx b/editor.planx.uk/src/@planx/components/PlanningConstraints/Public.tsx index bbb2c4e980..001c097fa2 100644 --- a/editor.planx.uk/src/@planx/components/PlanningConstraints/Public.tsx +++ b/editor.planx.uk/src/@planx/components/PlanningConstraints/Public.tsx @@ -58,7 +58,7 @@ function Component(props: Props) { // Check if this team should query Planning Data (or continue to use custom GIS) and set URL params accordingly // In future, Planning Data will theoretically support any UK address and this db setting won't be necessary, but data collection still limited to select councils! const hasPlanningData = useStore( - (state) => state.teamSettings?.hasPlanningData, + (state) => state.teamIntegrations?.hasPlanningData, ); const digitalLandParams: Record = { diff --git a/editor.planx.uk/src/components/Header.test.tsx b/editor.planx.uk/src/components/Header.test.tsx index 12b9d3dadb..918874934d 100644 --- a/editor.planx.uk/src/components/Header.test.tsx +++ b/editor.planx.uk/src/components/Header.test.tsx @@ -16,6 +16,9 @@ const mockTeam1: Team = { id: 123, name: "Open Systems Lab", slug: "opensystemslab", + integrations: { + hasPlanningData: false, + }, theme: { logo: "logo.jpg", primaryColour: "#0010A4", @@ -29,6 +32,9 @@ const mockTeam2: Team = { id: 456, name: "Closed Systems Lab", slug: "closedsystemslab", + integrations: { + hasPlanningData: false, + }, theme: { logo: null, primaryColour: "#0010A4", diff --git a/editor.planx.uk/src/pages/FlowEditor/lib/store/team.ts b/editor.planx.uk/src/pages/FlowEditor/lib/store/team.ts index 437b4142b4..113069d56c 100644 --- a/editor.planx.uk/src/pages/FlowEditor/lib/store/team.ts +++ b/editor.planx.uk/src/pages/FlowEditor/lib/store/team.ts @@ -1,6 +1,7 @@ import { NotifyPersonalisation, Team, + TeamIntegrations, TeamSettings, TeamTheme, } from "@opensystemslab/planx-core/types"; @@ -11,13 +12,14 @@ import type { StateCreator } from "zustand"; import { SharedStore } from "./shared"; export interface TeamStore { + boundaryBBox?: Team["boundaryBBox"]; + notifyPersonalisation?: NotifyPersonalisation; teamId: number; - teamTheme: TeamTheme; + teamIntegrations: TeamIntegrations; teamName: string; teamSettings?: TeamSettings; teamSlug: string; - notifyPersonalisation?: NotifyPersonalisation; - boundaryBBox?: Team["boundaryBBox"]; + teamTheme: TeamTheme; setTeam: (team: Team) => void; getTeam: () => Team; @@ -33,23 +35,25 @@ export const teamStore: StateCreator< [], TeamStore > = (set, get) => ({ + boundaryBBox: undefined, + notifyPersonalisation: undefined, teamId: 0, - teamTheme: {} as TeamTheme, + teamIntegrations: {} as TeamIntegrations, teamName: "", teamSettings: undefined, teamSlug: "", - notifyPersonalisation: undefined, - boundaryBBox: undefined, + teamTheme: {} as TeamTheme, setTeam: (team) => { set({ + boundaryBBox: team.boundaryBBox, + notifyPersonalisation: team.notifyPersonalisation, teamId: team.id, - teamTheme: team.theme, + teamIntegrations: team.integrations, teamName: team.name, teamSettings: team.settings, teamSlug: team.slug, - notifyPersonalisation: team.notifyPersonalisation, - boundaryBBox: team.boundaryBBox, + teamTheme: team.theme, }); if (team.theme?.favicon) { @@ -59,13 +63,14 @@ export const teamStore: StateCreator< }, getTeam: () => ({ + boundaryBBox: get().boundaryBBox, id: get().teamId, + integrations: get().teamIntegrations, name: get().teamName, - slug: get().teamSlug, + notifyPersonalisation: get().notifyPersonalisation, settings: get().teamSettings, + slug: get().teamSlug, theme: get().teamTheme, - notifyPersonalisation: get().notifyPersonalisation, - boundaryBBox: get().boundaryBBox, }), initTeamStore: async (slug) => { @@ -104,13 +109,14 @@ export const teamStore: StateCreator< clearTeamStore: () => set({ + boundaryBBox: undefined, + notifyPersonalisation: undefined, teamId: 0, - teamTheme: undefined, + teamIntegrations: undefined, teamName: "", teamSettings: undefined, teamSlug: "", - notifyPersonalisation: undefined, - boundaryBBox: undefined, + teamTheme: undefined, }), /** diff --git a/editor.planx.uk/src/routes/views/published.tsx b/editor.planx.uk/src/routes/views/published.tsx index f61cb39b7b..982d3ccadc 100644 --- a/editor.planx.uk/src/routes/views/published.tsx +++ b/editor.planx.uk/src/routes/views/published.tsx @@ -80,6 +80,9 @@ const fetchDataForPublishedView = async ( } name settings + integrations { + hasPlanningData: has_planning_data + } slug notifyPersonalisation: notify_personalisation boundaryBBox: boundary_bbox diff --git a/editor.planx.uk/src/routes/views/standalone.tsx b/editor.planx.uk/src/routes/views/standalone.tsx index 1f8780ff54..728835f90e 100644 --- a/editor.planx.uk/src/routes/views/standalone.tsx +++ b/editor.planx.uk/src/routes/views/standalone.tsx @@ -68,6 +68,9 @@ const fetchDataForStandaloneView = async ( } name settings + integrations { + hasPlanningData: has_planning_data + } slug notifyPersonalisation: notify_personalisation boundaryBBox: boundary_bbox diff --git a/editor.planx.uk/src/routes/views/unpublished.tsx b/editor.planx.uk/src/routes/views/unpublished.tsx index fe212e3ab5..444c040491 100644 --- a/editor.planx.uk/src/routes/views/unpublished.tsx +++ b/editor.planx.uk/src/routes/views/unpublished.tsx @@ -71,6 +71,9 @@ const fetchDataForUnpublishedView = async ( } name settings + integrations { + hasPlanningData: has_planning_data + } slug notifyPersonalisation: notify_personalisation boundaryBBox: boundary_bbox diff --git a/hasura.planx.uk/metadata/tables.yaml b/hasura.planx.uk/metadata/tables.yaml index 7fdeeda356..6db2704e48 100644 --- a/hasura.planx.uk/metadata/tables.yaml +++ b/hasura.planx.uk/metadata/tables.yaml @@ -1361,6 +1361,7 @@ - role: api permission: columns: + - has_planning_data - id - production_bops_secret - production_bops_submission_url @@ -1368,6 +1369,14 @@ - staging_bops_submission_url - team_id filter: {} + - role: public + permission: + columns: + - has_planning_data + - id + - team_id + filter: {} + comment: "" - table: name: team_members schema: public diff --git a/hasura.planx.uk/migrations/1707730766728_alter_table_public_team_integrations_add_column_has_planning_data/down.sql b/hasura.planx.uk/migrations/1707730766728_alter_table_public_team_integrations_add_column_has_planning_data/down.sql new file mode 100644 index 0000000000..71c6d275b4 --- /dev/null +++ b/hasura.planx.uk/migrations/1707730766728_alter_table_public_team_integrations_add_column_has_planning_data/down.sql @@ -0,0 +1,3 @@ +comment on column "public"."team_integrations"."has_planning_data" is NULL; + +alter table "public"."team_integrations" drop column "has_planning_data"; \ No newline at end of file diff --git a/hasura.planx.uk/migrations/1707730766728_alter_table_public_team_integrations_add_column_has_planning_data/up.sql b/hasura.planx.uk/migrations/1707730766728_alter_table_public_team_integrations_add_column_has_planning_data/up.sql new file mode 100644 index 0000000000..3e92862810 --- /dev/null +++ b/hasura.planx.uk/migrations/1707730766728_alter_table_public_team_integrations_add_column_has_planning_data/up.sql @@ -0,0 +1,9 @@ +alter table "public"."team_integrations" add column "has_planning_data" boolean + not null default 'false'; + +comment on column "public"."team_integrations"."has_planning_data" is E'Indicates if team has GIS data set up on planning.data.gov . This controls if GIS queries are proxied to Planning Data, or our custom GIS endpoints.'; + +UPDATE team_integrations +SET has_planning_data = COALESCE((teams.settings->>'hasPlanningData')::boolean, false) +FROM teams +WHERE team_integrations.team_id = teams.id; diff --git a/hasura.planx.uk/tests/team_integrations.test.js b/hasura.planx.uk/tests/team_integrations.test.js index 612c5a4b8d..a46a813f3b 100644 --- a/hasura.planx.uk/tests/team_integrations.test.js +++ b/hasura.planx.uk/tests/team_integrations.test.js @@ -8,7 +8,7 @@ describe("team_integrations", () => { }); test("cannot query team_integrations", () => { - expect(i.queries).not.toContain("team_integrations"); + expect(i.queries).toContain("team_integrations"); }); test("cannot create, update, or delete team_integrations", () => { diff --git a/infrastructure/README.md b/infrastructure/README.md index a7907a488b..a8e24d0a85 100644 --- a/infrastructure/README.md +++ b/infrastructure/README.md @@ -20,18 +20,15 @@ The stacks are: - `production` - `staging` -- `sandbox` Steps: 1. Install [Docker](https://docs.docker.com/get-docker/) -1. Install the [Pulumi CLI](https://www.pulumi.com/docs/reference/cli/) -1. Setup AWS credentials for Pulumi IAM role. Profile names should have the format `planx--pulumi`. -1. Log in to the Pulumi CLI using your PAT (`pulumi login`) -1. Install project dependencies at root (`pnpm i`), this will install dependencies for all layers -1. Provision layers manually (`cd && pulumi up --stack `) - -We use the `sandbox` environment to test IaC changes. The `application` layer is also manually deployed from the local developer's machine, and not via CI. +2. Install the [Pulumi CLI](https://www.pulumi.com/docs/reference/cli/) +3. Setup AWS credentials for Pulumi IAM role. Profile names should have the format `planx--pulumi`. +4. Log in to the Pulumi CLI using your PAT (`pulumi login`) +5. Install project dependencies at root (`pnpm i`), this will install dependencies for all layers +6. Provision layers manually (`cd && pulumi up --stack `) ### What about the secrets? diff --git a/infrastructure/application/Pulumi.production.yaml b/infrastructure/application/Pulumi.production.yaml index 21fa9c9231..ab382209b5 100644 --- a/infrastructure/application/Pulumi.production.yaml +++ b/infrastructure/application/Pulumi.production.yaml @@ -64,7 +64,7 @@ config: application:ssl-lambeth-key: secure: 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 application:ssl-medway-cert: - secure: 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 + secure: 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 application:ssl-medway-chain: secure: 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 application:ssl-medway-key: diff --git a/infrastructure/application/Pulumi.sandbox.yaml b/infrastructure/application/Pulumi.sandbox.yaml deleted file mode 100644 index d3ac496e30..0000000000 --- a/infrastructure/application/Pulumi.sandbox.yaml +++ /dev/null @@ -1,35 +0,0 @@ -config: - application:airbrake-project-id: "329753" - application:airbrake-project-key: - secure: AAABAO8NgmVNdkwajWpiKwi+dxGicFACbAQzK66FREUCp+OUbSRyNAb9dSQHq/n9fZb8xWBdvYBCQ9eBr2jqPQ== - application:bops-api-token: - secure: AAABAHLQf7CFOK073geL2TbTYycQCzPYUy3Xi66UniwIrTlOAqve2YBikJXzMJ2xS9v4dGUZMUmwUba0OpTz8KAMXJ8= - application:cloudflare-zone-id: 9cdfc35484748e96b0ed2b1d303a694f - application:file-api-key: - secure: AAABAK75LzZkxv9S1kx8w+DR9aVnIS/64z5SiPUdyC8XvNEhBCuSwmYlo6Q+dyay8wtMk+SQzHspppLfiI5BcK/4YYNPZTijIrgIwA== - application:google-client-id: 987324067365-vpsk3kgeq5n32ihjn760ihf8l7m5rhh8.apps.googleusercontent.com - application:google-client-secret: - secure: AAABAAYYW3KQvsCuEPpxIWCB8Nrs6kfYIFcgxCoBknmYs9s2TOifXvhbW2YEzp8rNBvwmOz78sm49i0W5LxjpdZAkQ== - application:govuk-notify-api-key: - secure: AAABAN6by1UpKop5de/dlYA003xrp1LMzLG60J2asKxioUMoUS0SsP7N+1KT53aKnux45aUZ6J+ryYpGge4+FkDhEZEC85Sw0+q/bMzKy1VER9BFIU6Qzxr/shdSVwzOW1ZZQNc/Q1cZjfY4umGbEiBipz1f - application:hasura-admin-secret: - secure: AAABABid66tza8SQBLcAwkQRw/+QjMNG6s9vWi8Nqq4tQwbCcwSdk1vBwPVU+9y6lfndX8kq+iY= - application:hasura-planx-api-key: - secure: AAABAKVQcDltAw2qwW7xlZJ22Squvgir7cRker6goWiV194dWlaGtmwOPjC0HZXexoYfm8O4pFSSRCLQZhan/Ta1/vY= - application:jwt-secret: - secure: AAABABgBYrYNZFwFjWAGHvomv+TkhJXiiK4gIEMkBtRMh64zyXOWBAil2GDEdVmhqhHhD+eqtuyI/SlwJtldFhO3hVJOls+O - application:metabase-encryption-secret-key: - secure: AAABADD9S3yimUNDyeHEz7tUW80VrQ3KCmeshMK+HvBg4j8uvwWvrQ48uGVjW+i0RZMmeAGdsqMtyBi4KQfBizNT0lJBrWS4SMf6VA== - application:metabasePgPassword: - secure: AAABAHGBg6KBmGvFkCFvTHV2ZZue7qABz36u1Uc/p07Te9F6CxAGyh6fqJGEg8XfqNlzHwxhPUjuEA+wd4EgOMRqMN1a93eBdkdBVw== - application:ordnance-survey-api-key: - secure: AAABAFOo/4XWkrVjKSBcYGxaJzwiAMAhEpR4HOetm9f6r6x2PBHsK4/8Tf9XYGACKtjbjpqmTk5S1Jd5Z5WdWQ== - application:session-secret: - secure: AAABANgFXfc2ZZ2PtBUIWsc9xEF0PdBXlCkjLrIpKgap9fMEPisJoUK6L8+qQtxTGNswGoHSsiYttCQU4JygWCSjLd/bB7FoBgI3lw== - application:slack-webhook-url: - secure: AAABAK+2TCk3O3T6fai/7ahl1a/QOs4P/bNnrLUV7VqewfAU6ZjYsgUIhJ3kgHaeHLndloMD6R3ytRI3DwCxyiL78UIiPOwmkxUBdZr0IOerOqPZzTwpILCHNUC4UOXCdg3Ipj6u3r7ntU5sPkGt - application:uniform-submission-url: https://staging.identity.idoxgroup.com/agw/submission-api - application:uniform-token-url: - secure: AAABAOJAT0wX/byM7wyaXGB+H4m0NnEmaJP8NiM2u+7orIYvIM5yQfDb1GEAgoyMWRSn+7KFDYnCIvf5BNTyIHt1Usbr3R0rClm+zFbEZCuPV8ef2I8= - cloudflare:apiToken: - secure: AAABAPDjpKRV8PLulg+5kQfu5roxHWLgDH/zGT2+J+SKprEZJaJyLxr+98Q6oNcoX9h+/9elmdK9S4dFeBpZ/zQeMmPTdd+h diff --git a/infrastructure/application/package.json b/infrastructure/application/package.json index f1fb25aac5..cd091b4fd0 100644 --- a/infrastructure/application/package.json +++ b/infrastructure/application/package.json @@ -17,10 +17,6 @@ "tldjs": "^2.3.1" }, "scripts": { - "setup-sandbox-env": "REACT_APP_GOOGLE_OAUTH_OVERRIDE=https://api.editor.planx.dev REACT_APP_API_URL=https://api.planx.in REACT_APP_HASURA_URL=https://hasura.planx.in/v1/graphql REACT_APP_SHAREDB_URL=wss://sharedb.planx.in", - "build-editor": "cd ../../editor.planx.uk && pnpm build", - "sandbox:up": "pnpm setup-sandbox-env pnpm build-editor && DOCKER_DEFAULT_PLATFORM=linux/amd64 pulumi up --stack sandbox", - "sandbox:down": "pulumi down --stack sandbox", - "sandbox:refresh": "pnpm setup-sandbox-env pnpm build-editor && DOCKER_DEFAULT_PLATFORM=linux/amd64 pulumi up --refresh --stack sandbox" + "build-editor": "cd ../../editor.planx.uk && pnpm build" } } diff --git a/infrastructure/application/utils/generateTeamSecrets.ts b/infrastructure/application/utils/generateTeamSecrets.ts index 702f184e14..747c3f195a 100644 --- a/infrastructure/application/utils/generateTeamSecrets.ts +++ b/infrastructure/application/utils/generateTeamSecrets.ts @@ -26,12 +26,6 @@ export const generateTeamSecrets = ( const secrets: awsx.ecs.KeyValuePair[] = []; teams.forEach((team) => { switch(env) { - case "sandbox": - secrets.push({ - name: `GOV_UK_PAY_TOKEN_${name(team.name)}`, - value: "sandbox" - }); - break; case "staging": secrets.push({ name: `GOV_UK_PAY_TOKEN_${name(team.name)}`, @@ -49,10 +43,7 @@ export const generateTeamSecrets = ( team.uniformInstances?.forEach((instance) => { secrets.push({ name: `UNIFORM_CLIENT_${name(instance)}`, - value: - env === "sandbox" - ? "sandbox" - : config.require(`uniform-client-${value(instance)}`), + value: config.require(`uniform-client-${value(instance)}`), }); }); }); diff --git a/infrastructure/certificates/Pulumi.sandbox.yaml b/infrastructure/certificates/Pulumi.sandbox.yaml deleted file mode 100644 index 58bd8c642c..0000000000 --- a/infrastructure/certificates/Pulumi.sandbox.yaml +++ /dev/null @@ -1,5 +0,0 @@ -config: - certificates:cloudflare-zone-id: 9cdfc35484748e96b0ed2b1d303a694f - certificates:domain: planx.in - cloudflare:apiToken: - secure: AAABAJvec9KuduaV6QFFc0sCCw1EMLs8ws6ggyxXOdPW8Dlp9XVCeMvB9XS6yMZyOfskANJaKPXx3QR7cAHi8G2FhpFZBAxt diff --git a/infrastructure/certificates/package.json b/infrastructure/certificates/package.json index 4ab6a73c64..4d6881906a 100644 --- a/infrastructure/certificates/package.json +++ b/infrastructure/certificates/package.json @@ -10,11 +10,6 @@ "@pulumi/pulumi": "^3.0.0", "tldjs": "^2.3.1" }, - "scripts": { - "sandbox:up": "pulumi up --stack sandbox", - "sandbox:down": "pulumi down --stack sandbox", - "sandbox:refresh": "pulumi up --refresh --stack sandbox" - }, "pnpm": { "overrides": { "protobufjs": ">=7.2.4" diff --git a/infrastructure/data/Pulumi.sandbox.yaml b/infrastructure/data/Pulumi.sandbox.yaml deleted file mode 100644 index 3ab4fd4d72..0000000000 --- a/infrastructure/data/Pulumi.sandbox.yaml +++ /dev/null @@ -1,3 +0,0 @@ -config: - data:db-password: - secure: AAABAEMA8sHI6sqPqDbAjjqLq1YB4CklJuqUwlnKM85TAWCiMZsdu8C3+Sc40nm8MmGWBjtR9d90uj7N0/UODg== diff --git a/infrastructure/data/package.json b/infrastructure/data/package.json index e23a0b6633..eb983adad7 100644 --- a/infrastructure/data/package.json +++ b/infrastructure/data/package.json @@ -6,10 +6,5 @@ "@pulumi/aws": "^4.0.0", "@pulumi/awsx": "^0.30.0", "@pulumi/pulumi": "^3.74.0" - }, - "scripts": { - "sandbox:up": "pulumi up --stack sandbox", - "sandbox:down": "pulumi down --stack sandbox", - "sandbox:refresh": "pulumi up --refresh --stack sandbox" } } diff --git a/infrastructure/networking/package.json b/infrastructure/networking/package.json index e23a0b6633..eb983adad7 100644 --- a/infrastructure/networking/package.json +++ b/infrastructure/networking/package.json @@ -6,10 +6,5 @@ "@pulumi/aws": "^4.0.0", "@pulumi/awsx": "^0.30.0", "@pulumi/pulumi": "^3.74.0" - }, - "scripts": { - "sandbox:up": "pulumi up --stack sandbox", - "sandbox:down": "pulumi down --stack sandbox", - "sandbox:refresh": "pulumi up --refresh --stack sandbox" } }