Skip to content

Commit 56eef9d

Browse files
Merge pull request #178 from NHSDigital/dev/NPA-4699/Align-Blocked-Resources-With-Confluence-Table
NPA-4699: Align blocked resources for different auths with confluence table
2 parents c05ed00 + 8410bd3 commit 56eef9d

File tree

2 files changed

+24
-13
lines changed

2 files changed

+24
-13
lines changed
Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
path_suffix = flow.getVariable("proxy.pathsuffix").lower()
22
request_verb = flow.getVariable("request.verb").lower()
33

4-
blocked_resources = [
5-
("/fhir/r4/relatedperson", "get"),
6-
("/fhir/r4/questionnaireresponse", "post"),
7-
]
8-
94
auth_forbidden = False
10-
for blocked_resources in blocked_resources:
11-
if blocked_resources[0] in path_suffix and blocked_resources[1] == request_verb:
12-
auth_forbidden = True
5+
if request_verb == "patch":
6+
# Check blocked endpoint is within path suffix i.e. ignore path parameters
7+
blocked_resources = ["/fhir/r4/consent"]
8+
for blocked_resource in blocked_resources:
9+
if blocked_resource in path_suffix:
10+
auth_forbidden = True
11+
else:
12+
# Check blocked endpoint is equal to path suffix
13+
requested_resource = (path_suffix, request_verb)
14+
blocked_resources = [
15+
("/fhir/r4/relatedperson", "get"),
16+
("/fhir/r4/questionnaire", "get"),
17+
("/fhir/r4/questionnaireresponse", "post"),
18+
("/fhir/r4/questionnaireresponse", "get"),
19+
("/fhir/r4/consent", "post"),
20+
]
21+
auth_forbidden = requested_resource in blocked_resources
1322

1423
flow.setVariable("app_auth_forbidden", auth_forbidden)

proxies/live/apiproxy/resources/py/check-user-enabled-endpoint.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22
path_suffix = flow.getVariable("proxy.pathsuffix").lower()
33
request_verb = flow.getVariable("request.verb").lower()
44

5+
requested_resource = (path_suffix, request_verb)
6+
57
if auth_level == "p9":
6-
blocked_resources = [("/fhir/r4/consent", "post"), ("/fhir/r4/consent", "patch")]
8+
blocked_resources = [
9+
("/fhir/r4/questionnaire", "get"),
10+
("/fhir/r4/consent", "post"),
11+
]
712
elif auth_level == "all3":
813
blocked_resources = [("/fhir/r4/questionnaireresponse", "post")]
914
else:
1015
blocked_resources = []
1116

12-
auth_forbidden = False
13-
for blocked_resources in blocked_resources:
14-
if blocked_resources[0] in path_suffix and blocked_resources[1] == request_verb:
15-
auth_forbidden = True
17+
auth_forbidden = requested_resource in blocked_resources
1618

1719
flow.setVariable("user_auth_forbidden", auth_forbidden)

0 commit comments

Comments
 (0)