Skip to content

Commit 7224f63

Browse files
committed
Introduce proofing level check
Signed-off-by: Connor Avery <[email protected]>
1 parent b7b70ee commit 7224f63

File tree

4 files changed

+17
-5
lines changed

4 files changed

+17
-5
lines changed

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ jobs:
100100
STACK_NAME: pfp-sandbox
101101
TARGET_ENVIRONMENT: dev
102102
APIGEE_ENVIRONMENT: internal-dev-sandbox
103-
ENABLE_MUTUAL_TLS: true
103+
ENABLE_MUTUAL_TLS: false
104104
MTLS_KEY: prescriptions-for-patients-mtls-1
105105
BUILD_ARTIFACT: packaged_sandbox_code
106106
TRUSTSTORE_FILE: pfp-sandbox-truststore.pem

packages/getMyPrescriptions/src/extractNHSNumber.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type {EventHeaders} from "./types"
2+
13
export class NHSNumberValidationError extends Error {
24
constructor(msg: string) {
35
super(msg)
@@ -7,6 +9,14 @@ export class NHSNumberValidationError extends Error {
79
}
810
}
911

12+
export function extractNHSNumberFromHeaders(headers: EventHeaders): string {
13+
if (headers["nhs-login-identity-proofing-level"]) {
14+
return validateNHSNumber(headers["nhsd-nhslogin-user"]!)
15+
} else {
16+
return extractNHSNumber(headers["nhsd-nhslogin-user"])
17+
}
18+
}
19+
1020
export function extractNHSNumber(nhsloginUser: string | undefined): string {
1121
if (nhsloginUser === undefined || nhsloginUser === null) {
1222
throw new NHSNumberValidationError("nhsdloginUser not passed in")

packages/getMyPrescriptions/src/getMyPrescriptions.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@ import {
2323
TraceIDs,
2424
ResponseFunc
2525
} from "./responses"
26-
import {extractNHSNumber, NHSNumberValidationError, validateNHSNumber} from "./extractNHSNumber"
26+
import {extractNHSNumberFromHeaders, NHSNumberValidationError, validateNHSNumber} from "./extractNHSNumber"
2727
import {deepCopy, hasTimedOut, jobWithTimeout} from "./utils"
2828
import {buildStatusUpdateData, shouldGetStatusUpdates} from "./statusUpdate"
2929
import {extractOdsCodes, isolateOperationOutcome} from "./fhirUtils"
3030
import {pfpConfig, PfPConfig} from "@pfp-common/utilities"
31+
import type {EventHeaders} from "./types"
3132

3233
const LOG_LEVEL = process.env.LOG_LEVEL as LogLevel
3334
export const logger = new Logger({serviceName: "getMyPrescriptions", logLevel: LOG_LEVEL})
@@ -41,8 +42,6 @@ const SERVICE_SEARCH_TIMEOUT_MS = 5_000
4142
export const DELEGATED_ACCESS_HDR = "delegatedaccess"
4243
export const DELEGATED_ACCESS_SUB_HDR = "x-nhsd-subject-nhs-number"
4344

44-
type EventHeaders = Record<string, string | undefined>
45-
4645
export type GetMyPrescriptionsEvent = {
4746
rawHeaders: Record<string, string>
4847
headers: EventHeaders
@@ -149,6 +148,7 @@ async function eventHandler(
149148
params.pfpConfig, statusUpdateData
150149
)
151150
} catch (error) {
151+
logger.info("Error caught in getMyPrescriptions handler", {error})
152152
if (error instanceof NHSNumberValidationError) {
153153
return INVALID_NHS_NUMBER_RESPONSE
154154
} else {
@@ -162,7 +162,7 @@ export function adaptHeadersToSpine(headers: EventHeaders): EventHeaders {
162162
logger.debug("Testing if delegated access enabled", {headers})
163163
if (!headers[DELEGATED_ACCESS_HDR] || headers[DELEGATED_ACCESS_HDR].toLowerCase() !== "true") {
164164
logger.info("Subject access request detected")
165-
headers["nhsNumber"] = extractNHSNumber(headers["nhsd-nhslogin-user"])
165+
headers["nhsNumber"] = extractNHSNumberFromHeaders(headers)
166166
} else {
167167
logger.info("Delegated access request detected")
168168
let subjectNHSNumber = headers[DELEGATED_ACCESS_SUB_HDR]

packages/specification/prescriptions-for-patients.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,8 @@ x-nhsd-apim:
430430
target-identity:
431431
- name: nhs-login-nhs-number
432432
header: "nhsd-nhslogin-user"
433+
- name: nhs-login-identity-proofing-level
434+
header: "nhs-login-identity-proofing-level"
433435
ratelimiting:
434436
proxy:
435437
limit: 20000

0 commit comments

Comments
 (0)