@ministryofjustice/hmpps-prison-permissions-lib 0.0.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +31 -2
  2. package/README.md +30 -1
  3. package/dist/contractTests/contactsUi/scenarios/InUsersCaseLoadAndUserHasRoleScenarios.d.ts +2 -0
  4. package/dist/contractTests/contactsUi/scenarios/InUsersCaseLoadAndUserHasSomeRolesFromScenarios.d.ts +3 -0
  5. package/dist/contractTests/contactsUi/scenarios/baseCheck/BaseCheckScenarios.d.ts +13 -0
  6. package/dist/contractTests/prisonerProfile/scenarios/shared/InActiveCaseLoadAndUserHasSomeRolesFromScenarios.d.ts +3 -0
  7. package/dist/contractTests/prisonerProfile/scenarios/shared/InActiveCaseLoadScenarios.d.ts +1 -0
  8. package/dist/contractTests/prisonerProfile/scenarios/shared/InUsersCaseLoadAndUserHasRoleScenarios.d.ts +2 -0
  9. package/dist/contractTests/prisonerProfile/scenarios/shared/InUsersCaseLoadAndUserHasSomeRolesFromScenarios.d.ts +3 -0
  10. package/dist/contractTests/prisonerProfile/scenarios/shared/InUsersCaseLoadScenarios.d.ts +2 -0
  11. package/dist/contractTests/prisonerProfile/scenarios/shared/PrisonerProfileSensitiveEditCheckScenarios.d.ts +1 -2
  12. package/dist/index.cjs +61 -32
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.ts +14 -7
  15. package/dist/index.esm.js +61 -32
  16. package/dist/index.esm.js.map +1 -1
  17. package/dist/services/permissions/checks/domains/person/personHealthAndMedication/dietEdit/DietEditScenarios.d.ts +1 -2
  18. package/dist/services/permissions/checks/sharedChecks/{baseCheckAndInUsersCaseLoad/BaseCheckAndInUsersCaseLoad.d.ts → inActiveCaseLoad/InActiveCaseLoad.d.ts} +1 -1
  19. package/dist/services/permissions/checks/sharedChecks/inActiveCaseLoad/InActiveCaseLoadScenarios.d.ts +1 -0
  20. package/dist/services/permissions/checks/sharedChecks/inActiveCaseLoadAndUserHasRole/InActiveCaseLoadAndUserHasRole.d.ts +4 -0
  21. package/dist/services/permissions/checks/sharedChecks/inActiveCaseLoadAndUserHasRole/InActiveCaseLoadAndUserHasRoleScenarios.d.ts +2 -0
  22. package/dist/services/permissions/checks/sharedChecks/inActiveCaseLoadAndUserHasSomeRolesFrom/InActiveCaseLoadAndUserHasSomeRolesFrom.d.ts +4 -0
  23. package/dist/services/permissions/checks/sharedChecks/inActiveCaseLoadAndUserHasSomeRolesFrom/InActiveCaseLoadAndUserHasSomeRolesFromScenarios.d.ts +3 -0
  24. package/dist/services/permissions/checks/sharedChecks/{baseCheckAndInActiveCaseLoad/BaseCheckAndInActiveCaseLoad.d.ts → inUsersCaseLoad/InUsersCaseLoad.d.ts} +1 -1
  25. package/dist/services/permissions/checks/sharedChecks/inUsersCaseLoad/InUsersCaseLoadScenarios.d.ts +2 -0
  26. package/dist/services/permissions/checks/sharedChecks/inUsersCaseLoadAndUserHasRole/InUsersCaseLoadAndUserHasRole.d.ts +4 -0
  27. package/dist/services/permissions/checks/sharedChecks/inUsersCaseLoadAndUserHasRole/InUsersCaseLoadAndUserHasRoleScenarios.d.ts +2 -0
  28. package/dist/services/permissions/checks/sharedChecks/inUsersCaseLoadAndUserHasSomeRolesFrom/InUsersCaseLoadAndUserHasSomeRolesFrom.d.ts +4 -0
  29. package/dist/services/permissions/checks/sharedChecks/inUsersCaseLoadAndUserHasSomeRolesFrom/InUsersCaseLoadAndUserHasSomeRolesFromScenarios.d.ts +3 -0
  30. package/dist/services/permissions/checks/sharedChecks/prisonerProfileSensitiveEditCheck/PrisonerProfileSensitiveEditCheckScenarios.d.ts +1 -2
  31. package/dist/testUtils/TestScenario.d.ts +1 -0
  32. package/dist/types/internal/user/Role.d.ts +3 -0
  33. package/dist/types/public/permissions/domains/person/personalRelationships/PersonalRelationshipsPermissions.d.ts +7 -3
  34. package/package.json +1 -1
  35. package/readme/versioning.md +17 -0
  36. package/dist/contractTests/prisonerProfile/scenarios/shared/BaseCheckAndInActiveCaseLoadScenarios.d.ts +0 -2
  37. package/dist/contractTests/prisonerProfile/scenarios/shared/BaseCheckAndInUsersCaseLoadScenarios.d.ts +0 -2
  38. package/dist/services/permissions/checks/sharedChecks/baseCheckAndInActiveCaseLoad/BaseCheckAndInActiveCaseLoadScenarios.d.ts +0 -2
  39. package/dist/services/permissions/checks/sharedChecks/baseCheckAndInUsersCaseLoad/BaseCheckAndInUsersCaseLoadScenarios.d.ts +0 -2
  40. /package/dist/{services/permissions/checks/domains/person/personHealthAndMedication/dietEdit/DietEditCheck.test.d.ts → contractTests/contactsUi/ContactsUIContractTest.test.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # Change log
2
2
 
3
- ## 0.0.1-alpha.1 to 0.0.1-alpha.3
3
+ Please use this to capture reasoning behind changes:
4
4
 
5
- Pre-releases used sparingly in the prisoner profile for testing.
5
+ ## 0.2.0
6
+
7
+ Incident response. We are introducing an additional role enabling staff to upload photos via DPS.
8
+
9
+ This is in addition to the existing sensitive edit role to allow rollout of the feature independently of Prisoner
10
+ Profile edit.
11
+
12
+ ## 0.1.0
13
+
14
+ Additional personal relationships (contacts) permissions introduced to enable hmpps-contacts-ui to make use of the
15
+ library and for the Prisoner Profile and the Contacts UI to align on whether a user has access to a prisoner's
16
+ contacts.
17
+
18
+ Connect DPS and the Contacts team have agreed to allow contacts read permission for anyone with the prisoner's
19
+ prison in their caseload (rather than requiring an active caseload match as was initially implemented in the
20
+ Contacts UI). Contacts, restrictions and visit approval edits adopt the same role checks as were implemented
21
+ in the Contacts UI codebase.
22
+
23
+ We are keeping the divergence between the rules around editing Next of Kin and Emergency Contacts via the prisoner
24
+ profile for now to enable the Profile Edit and Contacts to role out to users independently, but we will aim to unify
25
+ these permissions once both rollouts are complete.
26
+
27
+ ## 0.0.1
28
+
29
+ Initial release supporting the Prisoner Profile permissions.
30
+
31
+ ## 0.0.1-alpha.1 to 0.0.1-alpha.15
32
+
33
+ Pre-releases used to incrementally replace the prisoner profile
34
+ permissions logic.
package/README.md CHANGED
@@ -69,7 +69,8 @@ The permissions service should be created just like any other of your services.
69
69
 
70
70
  * `prisonerSearchConfig`: [Prisoner Search](https://github.com/ministryofjustice/hmpps-prisoner-search) configuration
71
71
  conforming to the `hmpps-typescript-lib`'
72
- s `ApiConfig` [interface](https://github.com/ministryofjustice/hmpps-typescript-lib/blob/main/packages/rest-client/src/main/types/ApiConfig.ts)
72
+ s
73
+ `ApiConfig` [interface](https://github.com/ministryofjustice/hmpps-typescript-lib/blob/main/packages/rest-client/src/main/types/ApiConfig.ts)
73
74
  * `authenticationClient`: An `AuthenticationClient` instance (
74
75
  see [hmpps-typescript-lib](https://github.com/ministryofjustice/hmpps-typescript-lib/blob/main/packages/auth-clients/src/main/AuthenticationClient.ts))
75
76
  in order to make authorized client credentials calls to Prisoner Search.
@@ -121,7 +122,35 @@ throw a `PrisonerPermissionError` with a status code of 403. The Typescript Temp
121
122
  out when encountering an error status of 403,
122
123
  see [here](https://github.com/ministryofjustice/hmpps-template-typescript/blob/main/server/errorHandler.ts#L9).
123
124
 
125
+ #### 6. Make use of the permissions checking utility in your code
126
+
127
+ You can check if a particular permission is granted in your code simply by using the isGranted method, for example:
128
+
129
+ ```js
130
+ isGranted(PrisonerMoneyPermission.read, res.locals.prisonerPermissions)
131
+ ```
132
+
133
+ #### 7. Make use of the permissions checking utility directly in your nunjucks templates
134
+
135
+ You also can check permissions directly in nunjucks templates by:
136
+
137
+ * Configuring the nunjucks environment in your `nunjucksSetup.ts` file or equivalent:
138
+
139
+ ```js
140
+ // Enable permissions checking in templates:
141
+ setupNunjucksPermissions(njkEnv)
142
+ ```
143
+
144
+ * Using the permissions check in the template, for example:
145
+
146
+ ```
147
+ {% if isGranted(PrisonerMoneyPermission.read, res.locals.prisonerPermissions) %}
148
+ ...
149
+ {% endif %}
150
+ ```
151
+
124
152
  ## For library developers:
125
153
 
126
154
  1. [Publishing to NPM](readme/publishing.md)
127
155
  2. [Contributing to permissions](readme/contributing.md)
156
+ 3. [Versioning guidance](readme/versioning.md)
@@ -0,0 +1,2 @@
1
+ import { Role } from '../../../types/internal/user/Role';
2
+ export default function inUsersCaseLoadAndUserHasRoleScenarios(role: Role): import("../../../testUtils/TestScenario").TestScenarios;
@@ -0,0 +1,3 @@
1
+ import { Role } from '../../../types/internal/user/Role';
2
+ import { TestScenarios } from '../../../testUtils/TestScenario';
3
+ export default function inUsersCaseLoadAndUserHasSomeRolesFromScenarios(roles: Role[]): TestScenarios;
@@ -0,0 +1,13 @@
1
+ import { TestScenarios } from '../../../../testUtils/TestScenario';
2
+ export declare const deniedRestrictedPatientCheckScenarios: TestScenarios;
3
+ export declare const grantedRestrictedPatientCheckScenarios: TestScenarios;
4
+ export declare const deniedReleasedPrisonerCheckScenarios: TestScenarios;
5
+ export declare const grantedReleasedPrisonerCheckScenarios: TestScenarios;
6
+ export declare const deniedTransferringPrisonerCheckScenarios: TestScenarios;
7
+ export declare const grantedTransferringPrisonerCheckScenarios: TestScenarios;
8
+ export declare const deniedCaseLoadCheckScenarios: TestScenarios;
9
+ export declare const grantedCaseLoadCheckScenarios: TestScenarios;
10
+ export declare const grantedGlobalSearchCheckScenarios: TestScenarios;
11
+ export declare const deniedBaseCheckScenarios: TestScenarios;
12
+ export declare const grantedBaseCheckScenarios: TestScenarios;
13
+ export declare const baseCheckScenarios: TestScenarios;
@@ -0,0 +1,3 @@
1
+ import { Role } from '../../../../types/internal/user/Role';
2
+ import { TestScenarios } from '../../../../testUtils/TestScenario';
3
+ export default function inActiveCaseLoadAndUserHasSomeRolesFromScenarios(roles: Role[]): TestScenarios;
@@ -0,0 +1 @@
1
+ export declare const inActiveCaseLoadScenarios: import("../../../../testUtils/TestScenario").TestScenarios;
@@ -0,0 +1,2 @@
1
+ import { Role } from '../../../../types/internal/user/Role';
2
+ export default function inUsersCaseLoadAndUserHasRoleScenarios(role: Role): import("../../../../testUtils/TestScenario").TestScenarios;
@@ -0,0 +1,3 @@
1
+ import { Role } from '../../../../types/internal/user/Role';
2
+ import { TestScenarios } from '../../../../testUtils/TestScenario';
3
+ export default function inUsersCaseLoadAndUserHasSomeRolesFromScenarios(roles: Role[]): TestScenarios;
@@ -0,0 +1,2 @@
1
+ import { TestScenarios } from '../../../../testUtils/TestScenario';
2
+ export declare const inUsersCaseLoadScenarios: TestScenarios;
@@ -1,2 +1 @@
1
- import { TestScenarios } from '../../../../testUtils/TestScenario';
2
- export declare const prisonerProfileSensitiveEditCheckScenarios: TestScenarios;
1
+ export declare const prisonerProfileSensitiveEditCheckScenarios: import("../../../../testUtils/TestScenario").TestScenarios;
package/dist/index.cjs CHANGED
@@ -68,6 +68,8 @@ exports.Role = void 0;
68
68
  Role["ApproveCategorisation"] = "ROLE_APPROVE_CATEGORISATION";
69
69
  Role["CategorisationSecurity"] = "ROLE_CATEGORISATION_SECURITY";
70
70
  Role["CellMove"] = "ROLE_CELL_MOVE";
71
+ Role["ContactsAdministrator"] = "ROLE_CONTACTS_ADMINISTRATOR";
72
+ Role["ContactsAuthoriser"] = "ROLE_CONTACTS_AUTHORISER";
71
73
  Role["CreateCategorisation"] = "ROLE_CREATE_CATEGORISATION";
72
74
  Role["CreateRecategorisation"] = "ROLE_CREATE_RECATEGORISATION";
73
75
  Role["DeleteSensitiveCaseNotes"] = "ROLE_DELETE_SENSITIVE_CASE_NOTES";
@@ -84,6 +86,7 @@ exports.Role = void 0;
84
86
  Role["PathfinderStdProbation"] = "ROLE_PF_STD_PROBATION";
85
87
  Role["PathfinderUser"] = "ROLE_PF_USER";
86
88
  Role["PomUser"] = "ROLE_POM";
89
+ Role["PrisonerProfilePhotoUpload"] = "ROLE_PRISONER_PROFILE_PHOTO_UPLOAD";
87
90
  Role["PrisonerProfileSensitiveEdit"] = "ROLE_PRISONER_PROFILE_SENSITIVE_RW";
88
91
  Role["ReceptionUser"] = "ROLE_PRISON_RECEPTION";
89
92
  Role["ReleaseDatesCalculator"] = "ROLE_RELEASE_DATES_CALCULATOR";
@@ -232,7 +235,7 @@ exports.PrisonerMoneyPermission = void 0;
232
235
  PrisonerMoneyPermission["read"] = "prisoner:prisoner-money:read";
233
236
  })(exports.PrisonerMoneyPermission || (exports.PrisonerMoneyPermission = {}));
234
237
 
235
- function baseCheckAndInUsersCaseLoad(permission, request) {
238
+ function inUsersCaseLoad(permission, request) {
236
239
  const { user, prisoner, baseCheckStatus } = request;
237
240
  const baseCheckPassed = baseCheckStatus === exports.PermissionCheckStatus.OK;
238
241
  const check = baseCheckPassed && isInUsersCaseLoad(prisoner.prisonId, user);
@@ -242,7 +245,7 @@ function baseCheckAndInUsersCaseLoad(permission, request) {
242
245
  }
243
246
 
244
247
  function prisonerMoneyReadCheck(request) {
245
- return baseCheckAndInUsersCaseLoad(exports.PrisonerMoneyPermission.read, request);
248
+ return inUsersCaseLoad(exports.PrisonerMoneyPermission.read, request);
246
249
  }
247
250
 
248
251
  function prisonerMoneyCheck(request) {
@@ -441,7 +444,7 @@ exports.PrisonerVisitsAndVisitorsPermission = void 0;
441
444
  })(exports.PrisonerVisitsAndVisitorsPermission || (exports.PrisonerVisitsAndVisitorsPermission = {}));
442
445
 
443
446
  function prisonerVisitsAndVisitorsReadCheck(request) {
444
- return baseCheckAndInUsersCaseLoad(exports.PrisonerVisitsAndVisitorsPermission.read, request);
447
+ return inUsersCaseLoad(exports.PrisonerVisitsAndVisitorsPermission.read, request);
445
448
  }
446
449
 
447
450
  function prisonerVisitsAndVisitorsCheck(request) {
@@ -624,28 +627,31 @@ exports.CorePersonRecordPermission = void 0;
624
627
  CorePersonRecordPermission["edit_distinguishing_marks"] = "prisoner:distinguishing-marks:edit";
625
628
  })(exports.CorePersonRecordPermission || (exports.CorePersonRecordPermission = {}));
626
629
 
627
- function baseCheckAndInActiveCaseLoad(permission, request) {
630
+ function inActiveCaseLoadAndUserHasSomeRolesFrom(roles, permission, request) {
628
631
  const { user, prisoner, baseCheckStatus } = request;
629
632
  const baseCheckPassed = baseCheckStatus === exports.PermissionCheckStatus.OK;
630
- const check = baseCheckPassed && isActiveCaseLoad(prisoner.prisonId, user);
633
+ const inActiveCaseLoad = isActiveCaseLoad(prisoner.prisonId, user);
634
+ const hasRole = userHasSomeRolesFrom(roles, user);
635
+ const check = baseCheckPassed && inActiveCaseLoad && hasRole;
631
636
  if (!check)
632
- logDeniedPermissionCheck(permission, request, exports.PermissionCheckStatus.NOT_ACTIVE_CASELOAD);
637
+ logDeniedPermissionCheck(permission, request, inActiveCaseLoad ? exports.PermissionCheckStatus.ROLE_NOT_PRESENT : exports.PermissionCheckStatus.NOT_ACTIVE_CASELOAD);
633
638
  return check;
634
639
  }
635
640
 
641
+ function inActiveCaseLoad(permission, request) {
642
+ return inActiveCaseLoadAndUserHasSomeRolesFrom([], permission, request);
643
+ }
644
+
636
645
  function prisonerProfileEditCheck(permission, request) {
637
- return baseCheckAndInActiveCaseLoad(permission, request);
646
+ return inActiveCaseLoad(permission, request);
647
+ }
648
+
649
+ function inActiveCaseLoadAndUserHasRole(role, permission, request) {
650
+ return inActiveCaseLoadAndUserHasSomeRolesFrom([role], permission, request);
638
651
  }
639
652
 
640
653
  function prisonerProfileSensitiveEditCheck(permission, request) {
641
- const { user, prisoner, baseCheckStatus } = request;
642
- const baseCheckPassed = baseCheckStatus === exports.PermissionCheckStatus.OK;
643
- const inActiveCaseLoad = isActiveCaseLoad(prisoner.prisonId, user);
644
- const hasRole = userHasRole(exports.Role.PrisonerProfileSensitiveEdit, user);
645
- const check = baseCheckPassed && inActiveCaseLoad && hasRole;
646
- if (!check)
647
- logDeniedPermissionCheck(permission, request, inActiveCaseLoad ? exports.PermissionCheckStatus.ROLE_NOT_PRESENT : exports.PermissionCheckStatus.NOT_ACTIVE_CASELOAD);
648
- return check;
654
+ return inActiveCaseLoadAndUserHasRole(exports.Role.PrisonerProfileSensitiveEdit, permission, request);
649
655
  }
650
656
 
651
657
  const permission$2 = exports.CorePersonRecordPermission.read_photo;
@@ -680,7 +686,7 @@ function checkPhotoAccess(request) {
680
686
  function corePersonRecordCheck(request) {
681
687
  return {
682
688
  [exports.CorePersonRecordPermission.read_photo]: photoReadCheck(request),
683
- ...sensitiveEditCheck$2(exports.CorePersonRecordPermission.edit_photo, request),
689
+ [exports.CorePersonRecordPermission.edit_photo]: inActiveCaseLoadAndUserHasSomeRolesFrom([exports.Role.PrisonerProfileSensitiveEdit, exports.Role.PrisonerProfilePhotoUpload], exports.CorePersonRecordPermission.edit_photo, request),
684
690
  ...readCheck$4(exports.CorePersonRecordPermission.read_physical_characteristics, request),
685
691
  ...editCheck$4(exports.CorePersonRecordPermission.edit_physical_characteristics, request),
686
692
  ...readCheck$4(exports.CorePersonRecordPermission.read_place_of_birth, request),
@@ -757,14 +763,7 @@ exports.PersonHealthAndMedicationPermission = void 0;
757
763
 
758
764
  const permission$1 = exports.PersonHealthAndMedicationPermission.edit_diet;
759
765
  function dietEditCheck(request) {
760
- const { user, prisoner, baseCheckStatus } = request;
761
- const baseCheckPassed = baseCheckStatus === exports.PermissionCheckStatus.OK;
762
- const inActiveCaseLoad = isActiveCaseLoad(prisoner.prisonId, user);
763
- const hasRole = userHasRole(exports.Role.DietAndAllergiesEdit, user);
764
- const check = baseCheckPassed && inActiveCaseLoad && hasRole;
765
- if (!check)
766
- logDeniedPermissionCheck(permission$1, request, inActiveCaseLoad ? exports.PermissionCheckStatus.ROLE_NOT_PRESENT : exports.PermissionCheckStatus.NOT_ACTIVE_CASELOAD);
767
- return check;
766
+ return inActiveCaseLoadAndUserHasRole(exports.Role.DietAndAllergiesEdit, permission$1, request);
768
767
  }
769
768
 
770
769
  function personHealthAndMedicationCheck(request) {
@@ -786,23 +785,49 @@ function editCheck$2(permission, request) {
786
785
 
787
786
  exports.PersonalRelationshipsPermission = void 0;
788
787
  (function (PersonalRelationshipsPermission) {
789
- // Next of kin & emergency contacts
790
- PersonalRelationshipsPermission["read_emergency_contacts"] = "prisoner:emergency-contacts:read";
791
- PersonalRelationshipsPermission["edit_emergency_contacts"] = "prisoner:emergency-contacts:edit";
792
788
  PersonalRelationshipsPermission["read_number_of_children"] = "prisoner:number-of-children:read";
793
789
  PersonalRelationshipsPermission["edit_number_of_children"] = "prisoner:number-of-children:edit";
794
790
  PersonalRelationshipsPermission["read_domestic_status"] = "prisoner:domestic-status:read";
795
791
  PersonalRelationshipsPermission["edit_domestic_status"] = "prisoner:domestic-status:edit";
792
+ // Next of kin & emergency contacts (via prisoner profile)
793
+ // This needs a review once both the contacts service and the
794
+ // profile edit have been rolled out wider:
795
+ PersonalRelationshipsPermission["read_emergency_contacts"] = "prisoner:emergency-contacts:read";
796
+ PersonalRelationshipsPermission["edit_emergency_contacts"] = "prisoner:emergency-contacts:edit";
797
+ // All social and official contacts:
798
+ PersonalRelationshipsPermission["read_contacts"] = "prisoner:contacts:read";
799
+ PersonalRelationshipsPermission["edit_contacts"] = "prisoner:contacts:edit";
800
+ PersonalRelationshipsPermission["edit_contact_restrictions"] = "prisoner:contact-restrictions:edit";
801
+ PersonalRelationshipsPermission["edit_contact_visit_approval"] = "prisoner:contact-visit-approval:edit";
796
802
  })(exports.PersonalRelationshipsPermission || (exports.PersonalRelationshipsPermission = {}));
797
803
 
804
+ function inUsersCaseLoadAndUserHasSomeRolesFrom(roles, permission, request) {
805
+ const { user, prisoner, baseCheckStatus } = request;
806
+ const baseCheckPassed = baseCheckStatus === exports.PermissionCheckStatus.OK;
807
+ const inUsersCaseLoad = isInUsersCaseLoad(prisoner.prisonId, user);
808
+ const hasRole = userHasSomeRolesFrom(roles, user);
809
+ const check = baseCheckPassed && inUsersCaseLoad && hasRole;
810
+ if (!check)
811
+ logDeniedPermissionCheck(permission, request, inUsersCaseLoad ? exports.PermissionCheckStatus.ROLE_NOT_PRESENT : exports.PermissionCheckStatus.NOT_IN_CASELOAD);
812
+ return check;
813
+ }
814
+
815
+ function inUsersCaseLoadAndUserHasRole(role, permission, request) {
816
+ return inUsersCaseLoadAndUserHasSomeRolesFrom([role], permission, request);
817
+ }
818
+
798
819
  function personalRelationshipsCheck(request) {
799
820
  return {
800
- ...readCheck$1(exports.PersonalRelationshipsPermission.read_emergency_contacts, request),
801
- ...sensitiveEditCheck(exports.PersonalRelationshipsPermission.edit_emergency_contacts, request),
802
821
  ...readCheck$1(exports.PersonalRelationshipsPermission.read_number_of_children, request),
803
822
  ...editCheck$1(exports.PersonalRelationshipsPermission.edit_number_of_children, request),
804
823
  ...readCheck$1(exports.PersonalRelationshipsPermission.read_domestic_status, request),
805
824
  ...editCheck$1(exports.PersonalRelationshipsPermission.edit_domestic_status, request),
825
+ ...readCheck$1(exports.PersonalRelationshipsPermission.read_emergency_contacts, request),
826
+ ...sensitiveEditCheck(exports.PersonalRelationshipsPermission.edit_emergency_contacts, request),
827
+ [exports.PersonalRelationshipsPermission.read_contacts]: inUsersCaseLoad(exports.PersonalRelationshipsPermission.read_contacts, request),
828
+ [exports.PersonalRelationshipsPermission.edit_contacts]: inUsersCaseLoadAndUserHasSomeRolesFrom([exports.Role.ContactsAdministrator, exports.Role.ContactsAuthoriser], exports.PersonalRelationshipsPermission.edit_contacts, request),
829
+ [exports.PersonalRelationshipsPermission.edit_contact_restrictions]: inUsersCaseLoadAndUserHasRole(exports.Role.ContactsAuthoriser, exports.PersonalRelationshipsPermission.edit_contact_restrictions, request),
830
+ [exports.PersonalRelationshipsPermission.edit_contact_visit_approval]: inUsersCaseLoadAndUserHasRole(exports.Role.ContactsAuthoriser, exports.PersonalRelationshipsPermission.edit_contact_visit_approval, request),
806
831
  };
807
832
  }
808
833
  function readCheck$1(permission, request) {
@@ -944,7 +969,7 @@ exports.PersonInterventionsPermission = void 0;
944
969
  })(exports.PersonInterventionsPermission || (exports.PersonInterventionsPermission = {}));
945
970
 
946
971
  function csipReadCheck(request) {
947
- return baseCheckAndInUsersCaseLoad(exports.PersonInterventionsPermission.read_csip, request);
972
+ return inUsersCaseLoad(exports.PersonInterventionsPermission.read_csip, request);
948
973
  }
949
974
 
950
975
  function personInterventionsCheck(request) {
@@ -1175,12 +1200,16 @@ const personHealthAndMedicationPermissionPaths = {
1175
1200
  const basePath$1 = 'domainGroups.person.personalRelationships';
1176
1201
  // eslint-disable-next-line import/prefer-default-export
1177
1202
  const personalRelationshipsPermissionPaths = {
1178
- [exports.PersonalRelationshipsPermission.read_emergency_contacts]: `${basePath$1}.${exports.PersonalRelationshipsPermission.read_emergency_contacts}`,
1179
- [exports.PersonalRelationshipsPermission.edit_emergency_contacts]: `${basePath$1}.${exports.PersonalRelationshipsPermission.edit_emergency_contacts}`,
1180
1203
  [exports.PersonalRelationshipsPermission.read_number_of_children]: `${basePath$1}.${exports.PersonalRelationshipsPermission.read_number_of_children}`,
1181
1204
  [exports.PersonalRelationshipsPermission.edit_number_of_children]: `${basePath$1}.${exports.PersonalRelationshipsPermission.edit_number_of_children}`,
1182
1205
  [exports.PersonalRelationshipsPermission.read_domestic_status]: `${basePath$1}.${exports.PersonalRelationshipsPermission.read_domestic_status}`,
1183
1206
  [exports.PersonalRelationshipsPermission.edit_domestic_status]: `${basePath$1}.${exports.PersonalRelationshipsPermission.edit_domestic_status}`,
1207
+ [exports.PersonalRelationshipsPermission.read_contacts]: `${basePath$1}.${exports.PersonalRelationshipsPermission.read_contacts}`,
1208
+ [exports.PersonalRelationshipsPermission.edit_contacts]: `${basePath$1}.${exports.PersonalRelationshipsPermission.edit_contacts}`,
1209
+ [exports.PersonalRelationshipsPermission.edit_contact_restrictions]: `${basePath$1}.${exports.PersonalRelationshipsPermission.edit_contact_restrictions}`,
1210
+ [exports.PersonalRelationshipsPermission.edit_contact_visit_approval]: `${basePath$1}.${exports.PersonalRelationshipsPermission.edit_contact_visit_approval}`,
1211
+ [exports.PersonalRelationshipsPermission.read_emergency_contacts]: `${basePath$1}.${exports.PersonalRelationshipsPermission.read_emergency_contacts}`,
1212
+ [exports.PersonalRelationshipsPermission.edit_emergency_contacts]: `${basePath$1}.${exports.PersonalRelationshipsPermission.edit_emergency_contacts}`,
1184
1213
  };
1185
1214
 
1186
1215
  // eslint-disable-next-line import/prefer-default-export