@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.
- package/CHANGELOG.md +31 -2
- package/README.md +30 -1
- package/dist/contractTests/contactsUi/scenarios/InUsersCaseLoadAndUserHasRoleScenarios.d.ts +2 -0
- package/dist/contractTests/contactsUi/scenarios/InUsersCaseLoadAndUserHasSomeRolesFromScenarios.d.ts +3 -0
- package/dist/contractTests/contactsUi/scenarios/baseCheck/BaseCheckScenarios.d.ts +13 -0
- package/dist/contractTests/prisonerProfile/scenarios/shared/InActiveCaseLoadAndUserHasSomeRolesFromScenarios.d.ts +3 -0
- package/dist/contractTests/prisonerProfile/scenarios/shared/InActiveCaseLoadScenarios.d.ts +1 -0
- package/dist/contractTests/prisonerProfile/scenarios/shared/InUsersCaseLoadAndUserHasRoleScenarios.d.ts +2 -0
- package/dist/contractTests/prisonerProfile/scenarios/shared/InUsersCaseLoadAndUserHasSomeRolesFromScenarios.d.ts +3 -0
- package/dist/contractTests/prisonerProfile/scenarios/shared/InUsersCaseLoadScenarios.d.ts +2 -0
- package/dist/contractTests/prisonerProfile/scenarios/shared/PrisonerProfileSensitiveEditCheckScenarios.d.ts +1 -2
- package/dist/index.cjs +61 -32
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +14 -7
- package/dist/index.esm.js +61 -32
- package/dist/index.esm.js.map +1 -1
- package/dist/services/permissions/checks/domains/person/personHealthAndMedication/dietEdit/DietEditScenarios.d.ts +1 -2
- package/dist/services/permissions/checks/sharedChecks/{baseCheckAndInUsersCaseLoad/BaseCheckAndInUsersCaseLoad.d.ts → inActiveCaseLoad/InActiveCaseLoad.d.ts} +1 -1
- package/dist/services/permissions/checks/sharedChecks/inActiveCaseLoad/InActiveCaseLoadScenarios.d.ts +1 -0
- package/dist/services/permissions/checks/sharedChecks/inActiveCaseLoadAndUserHasRole/InActiveCaseLoadAndUserHasRole.d.ts +4 -0
- package/dist/services/permissions/checks/sharedChecks/inActiveCaseLoadAndUserHasRole/InActiveCaseLoadAndUserHasRoleScenarios.d.ts +2 -0
- package/dist/services/permissions/checks/sharedChecks/inActiveCaseLoadAndUserHasSomeRolesFrom/InActiveCaseLoadAndUserHasSomeRolesFrom.d.ts +4 -0
- package/dist/services/permissions/checks/sharedChecks/inActiveCaseLoadAndUserHasSomeRolesFrom/InActiveCaseLoadAndUserHasSomeRolesFromScenarios.d.ts +3 -0
- package/dist/services/permissions/checks/sharedChecks/{baseCheckAndInActiveCaseLoad/BaseCheckAndInActiveCaseLoad.d.ts → inUsersCaseLoad/InUsersCaseLoad.d.ts} +1 -1
- package/dist/services/permissions/checks/sharedChecks/inUsersCaseLoad/InUsersCaseLoadScenarios.d.ts +2 -0
- package/dist/services/permissions/checks/sharedChecks/inUsersCaseLoadAndUserHasRole/InUsersCaseLoadAndUserHasRole.d.ts +4 -0
- package/dist/services/permissions/checks/sharedChecks/inUsersCaseLoadAndUserHasRole/InUsersCaseLoadAndUserHasRoleScenarios.d.ts +2 -0
- package/dist/services/permissions/checks/sharedChecks/inUsersCaseLoadAndUserHasSomeRolesFrom/InUsersCaseLoadAndUserHasSomeRolesFrom.d.ts +4 -0
- package/dist/services/permissions/checks/sharedChecks/inUsersCaseLoadAndUserHasSomeRolesFrom/InUsersCaseLoadAndUserHasSomeRolesFromScenarios.d.ts +3 -0
- package/dist/services/permissions/checks/sharedChecks/prisonerProfileSensitiveEditCheck/PrisonerProfileSensitiveEditCheckScenarios.d.ts +1 -2
- package/dist/testUtils/TestScenario.d.ts +1 -0
- package/dist/types/internal/user/Role.d.ts +3 -0
- package/dist/types/public/permissions/domains/person/personalRelationships/PersonalRelationshipsPermissions.d.ts +7 -3
- package/package.json +1 -1
- package/readme/versioning.md +17 -0
- package/dist/contractTests/prisonerProfile/scenarios/shared/BaseCheckAndInActiveCaseLoadScenarios.d.ts +0 -2
- package/dist/contractTests/prisonerProfile/scenarios/shared/BaseCheckAndInUsersCaseLoadScenarios.d.ts +0 -2
- package/dist/services/permissions/checks/sharedChecks/baseCheckAndInActiveCaseLoad/BaseCheckAndInActiveCaseLoadScenarios.d.ts +0 -2
- package/dist/services/permissions/checks/sharedChecks/baseCheckAndInUsersCaseLoad/BaseCheckAndInUsersCaseLoadScenarios.d.ts +0 -2
- /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
|
-
|
|
3
|
+
Please use this to capture reasoning behind changes:
|
|
4
4
|
|
|
5
|
-
|
|
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
|
|
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,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 @@
|
|
|
1
|
+
export declare const inActiveCaseLoadScenarios: import("../../../../testUtils/TestScenario").TestScenarios;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
630
|
+
function inActiveCaseLoadAndUserHasSomeRolesFrom(roles, permission, request) {
|
|
628
631
|
const { user, prisoner, baseCheckStatus } = request;
|
|
629
632
|
const baseCheckPassed = baseCheckStatus === exports.PermissionCheckStatus.OK;
|
|
630
|
-
const
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|