Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions azure/templates/post-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ steps:
displayName: Deploy mock provider
workingDirectory: "$(Pipeline.Workspace)/s/$(SERVICE_NAME)/$(SERVICE_ARTIFACT_NAME)"
retryCountOnTaskFailure: 2
env:
PYTHONWARNINGS: "ignore::SyntaxWarning"

- bash: |
set -e
Expand Down
2 changes: 1 addition & 1 deletion mock_provider/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ COPY --from=0 /specification /usr/src/prism/packages/cli/gp-connect-user-permi
COPY --from=0 /updated-spec.json /usr/src/prism/packages/cli/gp-connect-user-permissions/specification/gp-connect-user-permissions.json

#Running command of mock with OAS file
CMD ["mock" , "-h", "0.0.0.0", "-p" ,"9000" ,"gp-connect-user-permissions/specification/gp-connect-user-permissions.json"]
CMD ["mock" , "-h", "0.0.0.0", "-p" ,"9000" , "--multiprocess=false", "gp-connect-user-permissions/specification/gp-connect-user-permissions.json"]
9 changes: 9 additions & 0 deletions proxies/live/apiproxy/policies/AM-Enable-DelegatedAccess.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="AM-Enable-DelegatedAccess">
<DisplayName>AM-Enable-DelegatedAccess</DisplayName>
<AssignVariable>
<Name>delegatedaccess.enabled</Name>
<Value>true</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FlowCallout async="false" continueOnError="false" enabled="true" name="FlowCallout.CompositeTokenCheckOptIN">
<DisplayName>FlowCallout.CompositeTokenCheckOptIN</DisplayName>
<FaultRules/>
<Properties/>
<SharedFlowBundle>CompositeTokenCheckOptIN</SharedFlowBundle>
</FlowCallout>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Javascript name="JavaScript.ValidateNHSNumber" enabled="true" continueOnError="false">
<DisplayName>JavaScript.ValidateNHSNumber</DisplayName>
<ResourceURL>jsc://ValidateNHSNumber.js</ResourceURL>
</Javascript>
10 changes: 10 additions & 0 deletions proxies/live/apiproxy/proxies/default.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@
<Step>
<Name>FlowCallout.GetEnvironmentKeyValueMapData</Name>
</Step>
<Step>
<Name>AM-Enable-DelegatedAccess</Name>
</Step>
<Step>
<Name>FlowCallout.CompositeTokenCheckOptIN</Name>
<Condition>not (proxy.pathsuffix MatchesPath "/_ping" or proxy.pathsuffix MatchesPath "/_status")</Condition>
</Step>
<Step>
<Name>JavaScript.ValidateNHSNumber</Name>
</Step>
</Request>
</PreFlow>
<Flows>
Expand Down
40 changes: 40 additions & 0 deletions proxies/live/apiproxy/resources/jsc/ValidateNHSNumber.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
print("nhsd.actor.nhs_number NUM : " + context.getVariable("nhsd.actor.nhs_number"));
print("nhsd.subject.nhs_number NUM : " + context.getVariable("nhsd.subject.nhs_number"));

var httpverb = context.getVariable("request.verb");
var actorNHS = context.getVariable("nhsd.actor.nhs_number");
if (httpverb == 'GET') {
var queryNHSNumber = context.getVariable("request.queryparam.patientNHSNumber");
print("queryNHSNumber :" +queryNHSNumber);
if (queryNHSNumber) {
if (queryNHSNumber !== actorNHS) {
print("NHS Number is not valid");
}
}
else {
var routeParamArray = context.getVariable("proxy.pathsuffix").split('/');
var routeNHSNumber = routeParamArray[routeParamArray.length - 1];
print("routeNHSNumber :" +routeNHSNumber);
if (routeNHSNumber && routeNHSNumber !== actorNHS){
print("NHS Number is not valid");
}
}
}
else {
if(httpverb == 'POST') {

Check warning on line 24 in proxies/live/apiproxy/resources/jsc/ValidateNHSNumber.js

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'If' statement should not be the only statement in 'else' block

See more on https://sonarcloud.io/project/issues?id=NHSDigital_gp-connect-user-permissions&issues=AaBDeDv_oVPi-xfgKuSu&open=AaBDeDv_oVPi-xfgKuSu&pullRequest=137
var reqContent = context.getVariable("request.content");
var jsonContent = JSON.parse(reqContent);
var postNHSnumber = null;
for (var i = 0; i < jsonContent.parameter.length; i++) {
var p = jsonContent.parameter[i];
if ( p.name === "patientNHSNumber" && p.valueIdentifier && p.valueIdentifier.value) {

Check warning on line 30 in proxies/live/apiproxy/resources/jsc/ValidateNHSNumber.js

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Prefer using an optional chain expression instead, as it's more concise and easier to read.

See more on https://sonarcloud.io/project/issues?id=NHSDigital_gp-connect-user-permissions&issues=AaBC5oE1Fe2YRAws8xAj&open=AaBC5oE1Fe2YRAws8xAj&pullRequest=137
postNHSnumber = p.valueIdentifier.value;
break;
}
}

Check warning on line 34 in proxies/live/apiproxy/resources/jsc/ValidateNHSNumber.js

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Expected a `for-of` loop instead of a `for` loop with this simple iteration.

See more on https://sonarcloud.io/project/issues?id=NHSDigital_gp-connect-user-permissions&issues=AaBC5oE1Fe2YRAws8xAi&open=AaBC5oE1Fe2YRAws8xAi&pullRequest=137
print("postNHSnumber :" +postNHSnumber);
if (postNHSnumber && postNHSnumber !== actorNHS){
print("NHS Number is not valid");
}
}
}
Loading