From 3abac50b04f566de29fdae620754fc0e477fd0b2 Mon Sep 17 00:00:00 2001 From: Anthony4m Date: Mon, 15 Aug 2022 15:52:04 +0000 Subject: [PATCH 01/11] set testresultverified to false if user is a labuser --- .../java/de/symeda/sormas/api/sample/PathogenTestDto.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestDto.java b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestDto.java index ccb758c907c..e4483dbec43 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestDto.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/sample/PathogenTestDto.java @@ -1,17 +1,14 @@ /* * SORMAS® - Surveillance Outbreak Response Management & Analysis System * Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI) - * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ @@ -31,6 +28,7 @@ import de.symeda.sormas.api.sormastosormas.SormasToSormasConfig; import de.symeda.sormas.api.user.UserDto; import de.symeda.sormas.api.user.UserReferenceDto; +import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.DataHelper; import de.symeda.sormas.api.utils.DateFormatHelper; import de.symeda.sormas.api.utils.FieldConstraints; @@ -133,6 +131,9 @@ public static PathogenTestDto build(SampleDto sample, UserDto currentUser) { if (sample.getSamplePurpose() == SamplePurpose.INTERNAL) { pathogenTest.setTestResultVerified(true); } + if (currentUser.getUserRoles().contains(UserRole.LAB_USER)) { + pathogenTest.setTestResultVerified(false); + } pathogenTest.setLab(currentUser.getLaboratory()); if (pathogenTest.getLab() == null) { pathogenTest.setLab(sample.getLab()); From 4e2b9d2ec99ce13dadc9e51316903c6c8bab00e5 Mon Sep 17 00:00:00 2001 From: Anthony4m Date: Mon, 15 Aug 2022 15:53:07 +0000 Subject: [PATCH 02/11] added definition for lab supervisor and lab attendant --- sormas-api/src/main/resources/enum.properties | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sormas-api/src/main/resources/enum.properties b/sormas-api/src/main/resources/enum.properties index 2a4ff680135..02fc5aba997 100644 --- a/sormas-api/src/main/resources/enum.properties +++ b/sormas-api/src/main/resources/enum.properties @@ -1446,6 +1446,8 @@ UserRole.EXTERNAL_LAB_USER = External Lab Officer UserRole.HOSPITAL_INFORMANT = Hospital Informant UserRole.IMPORT_USER = Import User UserRole.LAB_USER = Lab Officer +UserRole.LAB_SUPERVISOR = Lab Supervisor +UserRole.LAB_ATTENDANT = Lab Attendant UserRole.NATIONAL_CLINICIAN = National Clinician UserRole.NATIONAL_OBSERVER = National Observer UserRole.NATIONAL_USER = National User From 37f529b7bc7dce790eccfa7b9f62b1cc56c7aa8a Mon Sep 17 00:00:00 2001 From: Anthony4m Date: Mon, 15 Aug 2022 15:53:50 +0000 Subject: [PATCH 03/11] added lab attendant and lab supervisor role to the userroles --- .../de/symeda/sormas/api/user/UserRole.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRole.java b/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRole.java index b9214402cb8..4ac8ada56b2 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRole.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRole.java @@ -51,6 +51,8 @@ public enum UserRole CONTACT_OFFICER(false, true, false, false, JurisdictionLevel.DISTRICT), EVENT_OFFICER(true, false, false, false, JurisdictionLevel.REGION), LAB_USER(false, false, false, false, JurisdictionLevel.LABORATORY), + LAB_ATTENDANT(false, false, false, false, JurisdictionLevel.LABORATORY), + LAB_SUPERVISOR(false, false, false, false, JurisdictionLevel.LABORATORY), EXTERNAL_LAB_USER(false, false, false, false, JurisdictionLevel.EXTERNAL_LABORATORY), NATIONAL_OBSERVER(false, false, false, false, JurisdictionLevel.NATION), STATE_OBSERVER(false, false, false, false, JurisdictionLevel.REGION), @@ -85,6 +87,8 @@ public enum UserRole public static final String _CONTACT_OFFICER = CONTACT_OFFICER.name(); public static final String _EVENT_OFFICER = EVENT_OFFICER.name(); public static final String _LAB_USER = LAB_USER.name(); + public static final String _LAB_ATTENDANT = LAB_ATTENDANT.name(); + public static final String _LAB_SUPERVISOR = LAB_SUPERVISOR.name(); public static final String _EXTERNAL_LAB_USER = EXTERNAL_LAB_USER.name(); public static final String _NATIONAL_OBSERVER = NATIONAL_OBSERVER.name(); public static final String _NATIONAL_CLINICIAN = NATIONAL_CLINICIAN.name(); @@ -173,6 +177,8 @@ public void addAssignableRoles(Collection collection) { collection.add(CONTACT_OFFICER); collection.add(SURVEILLANCE_OFFICER); collection.add(LAB_USER); + collection.add(LAB_ATTENDANT); + collection.add(LAB_SUPERVISOR); collection.add(NATIONAL_OBSERVER); collection.add(STATE_OBSERVER); collection.add(DISTRICT_OBSERVER); @@ -209,6 +215,12 @@ public void addAssignableRoles(Collection collection) { case LAB_USER: collection.add(LAB_USER); break; + case LAB_ATTENDANT: + collection.add(LAB_ATTENDANT); + break; + case LAB_SUPERVISOR: + collection.add(LAB_SUPERVISOR); + break; case EXTERNAL_LAB_USER: collection.add(EXTERNAL_LAB_USER); break; @@ -306,7 +318,10 @@ public static boolean isPortHealthUser(Collection roles) { } public static boolean isLabUser(Collection roles) { - return roles.contains(UserRole.LAB_USER) || roles.contains(UserRole.EXTERNAL_LAB_USER); + return roles.contains(UserRole.LAB_USER) + || roles.contains(UserRole.EXTERNAL_LAB_USER) + || roles.contains(UserRole.LAB_ATTENDANT) + || roles.contains(UserRole.LAB_SUPERVISOR); } public static void validate(Collection roles) throws UserRoleValidationException { From b7807627fc9e892418a82158fae08e307ad303b9 Mon Sep 17 00:00:00 2001 From: Anthony4m Date: Mon, 15 Aug 2022 15:54:59 +0000 Subject: [PATCH 04/11] added new rights to new users created --- .../de/symeda/sormas/api/user/UserRight.java | 87 ++++++++++++++++--- 1 file changed, 75 insertions(+), 12 deletions(-) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRight.java b/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRight.java index d7653931546..68fd0c36c54 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRight.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/user/UserRight.java @@ -31,6 +31,8 @@ import static de.symeda.sormas.api.user.UserRole.EXTERNAL_LAB_USER; import static de.symeda.sormas.api.user.UserRole.HOSPITAL_INFORMANT; import static de.symeda.sormas.api.user.UserRole.IMPORT_USER; +import static de.symeda.sormas.api.user.UserRole.LAB_ATTENDANT; +import static de.symeda.sormas.api.user.UserRole.LAB_SUPERVISOR; import static de.symeda.sormas.api.user.UserRole.LAB_USER; import static de.symeda.sormas.api.user.UserRole.NATIONAL_CLINICIAN; import static de.symeda.sormas.api.user.UserRole.NATIONAL_OBSERVER; @@ -71,6 +73,7 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -94,6 +97,8 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_ATTENDANT, + LAB_SUPERVISOR, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -114,6 +119,7 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -164,6 +170,8 @@ public enum UserRight { SURVEILLANCE_OFFICER, CASE_SUPERVISOR, LAB_USER, + LAB_ATTENDANT, + LAB_SUPERVISOR, COMMUNITY_OFFICER ), CASE_CHANGE_DISEASE( @@ -207,7 +215,8 @@ public enum UserRight { CASE_SUPERVISOR, CONTACT_SUPERVISOR, POE_SUPERVISOR, - LAB_USER + LAB_USER, + LAB_SUPERVISOR ), CASE_SHARE( ADMIN, @@ -250,6 +259,8 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -270,6 +281,7 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -290,6 +302,7 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -319,6 +332,8 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -339,6 +354,7 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -367,6 +383,7 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, COMMUNITY_OFFICER ), SAMPLE_VIEW( @@ -387,6 +404,8 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT, EXTERNAL_LAB_USER, EVENT_OFFICER, COMMUNITY_OFFICER @@ -404,6 +423,7 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, EXTERNAL_LAB_USER, COMMUNITY_OFFICER ), @@ -411,7 +431,8 @@ public enum UserRight { ADMIN, SURVEILLANCE_SUPERVISOR, ADMIN_SUPERVISOR, - EVENT_OFFICER + EVENT_OFFICER, + LAB_SUPERVISOR ), SAMPLE_DELETE( ADMIN, @@ -426,6 +447,7 @@ public enum UserRight { ADMIN_SUPERVISOR, CASE_SUPERVISOR, LAB_USER, + LAB_SUPERVISOR, EXTERNAL_LAB_USER ), SAMPLE_EXPORT( @@ -436,7 +458,8 @@ public enum UserRight { ADMIN_SUPERVISOR, CASE_SUPERVISOR, CONTACT_SUPERVISOR, - LAB_USER + LAB_USER, + LAB_SUPERVISOR ), PATHOGEN_TEST_CREATE( ADMIN, @@ -448,6 +471,7 @@ public enum UserRight { CASE_SUPERVISOR, EVENT_OFFICER, LAB_USER, + LAB_SUPERVISOR, EXTERNAL_LAB_USER, COMMUNITY_OFFICER ), @@ -461,6 +485,7 @@ public enum UserRight { CASE_SUPERVISOR, EVENT_OFFICER, LAB_USER, + LAB_SUPERVISOR, EXTERNAL_LAB_USER, COMMUNITY_OFFICER ), @@ -474,6 +499,8 @@ public enum UserRight { CASE_SUPERVISOR, CASE_OFFICER, LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT, EXTERNAL_LAB_USER ), ADDITIONAL_TEST_CREATE( @@ -482,6 +509,7 @@ public enum UserRight { CASE_SUPERVISOR, CASE_OFFICER, LAB_USER, + LAB_SUPERVISOR, EXTERNAL_LAB_USER ), ADDITIONAL_TEST_EDIT( @@ -490,6 +518,7 @@ public enum UserRight { CASE_SUPERVISOR, CASE_OFFICER, LAB_USER, + LAB_SUPERVISOR, EXTERNAL_LAB_USER ), ADDITIONAL_TEST_DELETE( @@ -522,7 +551,9 @@ public enum UserRight { CONTACT_OFFICER, EVENT_OFFICER, COMMUNITY_OFFICER, - LAB_USER + LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT ), CONTACT_ASSIGN( @@ -539,7 +570,8 @@ public enum UserRight { CONTACT_SUPERVISOR, CONTACT_OFFICER, COMMUNITY_OFFICER, - LAB_USER + LAB_USER, + LAB_SUPERVISOR ), CONTACT_DELETE( ADMIN, @@ -571,7 +603,8 @@ public enum UserRight { ADMIN_SUPERVISOR, CASE_SUPERVISOR, CONTACT_SUPERVISOR, - LAB_USER + LAB_USER, + LAB_SUPERVISOR ), // reassign or remove the case from an existing contact CONTACT_REASSIGN_CASE( @@ -623,7 +656,8 @@ public enum UserRight { ADMIN_SUPERVISOR, CASE_SUPERVISOR, CONTACT_SUPERVISOR, - LAB_USER + LAB_USER, + LAB_SUPERVISOR ), TASK_CREATE( ADMIN, @@ -636,6 +670,7 @@ public enum UserRight { CONTACT_SUPERVISOR, POE_SUPERVISOR, LAB_USER, + LAB_SUPERVISOR, SURVEILLANCE_OFFICER, COMMUNITY_OFFICER ), @@ -659,6 +694,8 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT, EXTERNAL_LAB_USER, EVENT_OFFICER, COMMUNITY_OFFICER @@ -680,6 +717,7 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, EXTERNAL_LAB_USER, EVENT_OFFICER, COMMUNITY_OFFICER @@ -695,6 +733,7 @@ public enum UserRight { CONTACT_SUPERVISOR, POE_SUPERVISOR, LAB_USER, + LAB_SUPERVISOR, SURVEILLANCE_OFFICER, COMMUNITY_OFFICER ), @@ -719,6 +758,7 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, EXTERNAL_LAB_USER, EVENT_OFFICER, COMMUNITY_OFFICER @@ -773,7 +813,9 @@ public enum UserRight { COMMUNITY_INFORMANT, EVENT_OFFICER, COMMUNITY_OFFICER, - LAB_USER + LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT ), EVENT_EDIT( ADMIN, @@ -799,7 +841,8 @@ public enum UserRight { CASE_SUPERVISOR, CONTACT_SUPERVISOR, POE_SUPERVISOR, - LAB_USER + LAB_USER, + LAB_SUPERVISOR ), EVENT_ARCHIVE( ADMIN, @@ -829,7 +872,8 @@ public enum UserRight { SURVEILLANCE_OFFICER, EVENT_OFFICER, COMMUNITY_OFFICER, - LAB_USER + LAB_USER, + LAB_SUPERVISOR ), EVENTPARTICIPANT_DELETE( ADMIN, @@ -971,6 +1015,8 @@ public enum UserRight { CONTACT_SUPERVISOR, POE_SUPERVISOR, LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT, COMMUNITY_OFFICER ), STATISTICS_EXPORT( @@ -984,6 +1030,7 @@ public enum UserRight { CONTACT_SUPERVISOR, POE_SUPERVISOR, LAB_USER, + LAB_SUPERVISOR, COMMUNITY_OFFICER ), DATABASE_EXPORT_ACCESS( @@ -1057,6 +1104,8 @@ public enum UserRight { CASE_SUPERVISOR, POE_SUPERVISOR, LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT, EVENT_OFFICER, SURVEILLANCE_OFFICER, CASE_OFFICER, @@ -1100,7 +1149,9 @@ public enum UserRight { NATIONAL_CLINICIAN, CASE_SUPERVISOR, CASE_OFFICER, - LAB_USER + LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT ), THERAPY_VIEW( ADMIN, @@ -1191,6 +1242,8 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -1282,7 +1335,9 @@ public enum UserRight { REST_EXTERNAL_VISITS_USER, SORMAS_TO_SORMAS_CLIENT, COMMUNITY_OFFICER, - LAB_USER + LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT ), SEE_PERSONAL_DATA_OUTSIDE_JURISDICTION( REST_EXTERNAL_VISITS_USER, @@ -1304,6 +1359,8 @@ public enum UserRight { COMMUNITY_INFORMANT, POE_INFORMANT, LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT, REST_EXTERNAL_VISITS_USER, SORMAS_TO_SORMAS_CLIENT, COMMUNITY_OFFICER @@ -1428,6 +1485,8 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -1451,6 +1510,8 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, + LAB_ATTENDANT, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -1471,6 +1532,7 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, EVENT_OFFICER, COMMUNITY_OFFICER ), @@ -1491,6 +1553,7 @@ public enum UserRight { HOSPITAL_INFORMANT, COMMUNITY_INFORMANT, LAB_USER, + LAB_SUPERVISOR, EVENT_OFFICER, COMMUNITY_OFFICER ), From 76b64b58aa17d7195ecd47e2c839721b67f7ded3 Mon Sep 17 00:00:00 2001 From: Anthony4m Date: Mon, 15 Aug 2022 15:55:47 +0000 Subject: [PATCH 05/11] hiding verify test results for lab officer --- .../de/symeda/sormas/ui/samples/PathogenTestForm.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestForm.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestForm.java index 4fcf3e76b40..4a753f4bc6e 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestForm.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/PathogenTestForm.java @@ -53,8 +53,10 @@ import de.symeda.sormas.api.sample.PathogenTestType; import de.symeda.sormas.api.sample.SampleDto; import de.symeda.sormas.api.sample.SamplePurpose; +import de.symeda.sormas.api.user.UserRole; import de.symeda.sormas.api.utils.fieldaccess.UiFieldAccessCheckers; import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers; +import de.symeda.sormas.ui.UserProvider; import de.symeda.sormas.ui.utils.AbstractEditForm; import de.symeda.sormas.ui.utils.CssStyles; import de.symeda.sormas.ui.utils.DateComparisonValidator; @@ -123,7 +125,6 @@ protected void addFields() { if (sample == null) { return; } - pathogenTestHeadingLabel = new Label(); pathogenTestHeadingLabel.addStyleName(H3); getContent().addComponent(pathogenTestHeadingLabel, PATHOGEN_TEST_HEADING_LOC); @@ -170,11 +171,14 @@ protected void addFields() { cqValueField.setConversionError(I18nProperties.getValidationError(Validations.onlyNumbersAllowed, cqValueField.getCaption())); NullableOptionGroup testResultVerifiedField = addField(PathogenTestDto.TEST_RESULT_VERIFIED, NullableOptionGroup.class); testResultVerifiedField.setRequired(true); + if (UserProvider.getCurrent().hasUserRole(UserRole.LAB_USER)) { + testResultVerifiedField.setRequired(false); + testResultVerifiedField.setVisible(false); + } CheckBox fourFoldIncrease = addField(PathogenTestDto.FOUR_FOLD_INCREASE_ANTIBODY_TITER, CheckBox.class); CssStyles.style(fourFoldIncrease, VSPACE_3, VSPACE_TOP_4); fourFoldIncrease.setVisible(false); fourFoldIncrease.setEnabled(false); - addField(PathogenTestDto.TEST_RESULT_TEXT, TextArea.class).setRows(6); addField(PathogenTestDto.PRELIMINARY).addStyleName(CssStyles.VSPACE_4); From 01abbca3d8d58404d62b25bd414862017a3a7b80 Mon Sep 17 00:00:00 2001 From: Anthony4m Date: Mon, 15 Aug 2022 15:56:41 +0000 Subject: [PATCH 06/11] removed shipment date from lab users grid --- .../src/main/java/de/symeda/sormas/ui/samples/SampleGrid.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleGrid.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleGrid.java index f5419adc9af..0f0310934a0 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleGrid.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleGrid.java @@ -144,7 +144,9 @@ public SampleGrid(SampleCriteria criteria) { addItemClickListener( new ShowDetailsListener<>(SampleIndexDto.UUID, e -> ControllerProvider.getSampleController().navigateToData(e.getUuid()))); - if (UserProvider.getCurrent().hasUserRole(UserRole.LAB_USER) || UserProvider.getCurrent().hasUserRole(UserRole.EXTERNAL_LAB_USER)) { + if (UserProvider.getCurrent().hasUserRole(UserRole.LAB_USER) + || UserProvider.getCurrent().hasUserRole(UserRole.EXTERNAL_LAB_USER) + || UserProvider.getCurrent().hasUserRole(UserRole.LAB_SUPERVISOR)) { removeColumn(SampleIndexDto.SHIPMENT_DATE); } else { removeColumn(SampleIndexDto.RECEIVED_DATE); From a862ec8ec35252032bcaaba134186c0dacfe166d Mon Sep 17 00:00:00 2001 From: Anthony4m Date: Mon, 15 Aug 2022 15:57:58 +0000 Subject: [PATCH 07/11] added lab supervisor to entity help --- .../java/de/symeda/sormas/api/utils/DefaultEntityHelper.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sormas-api/src/main/java/de/symeda/sormas/api/utils/DefaultEntityHelper.java b/sormas-api/src/main/java/de/symeda/sormas/api/utils/DefaultEntityHelper.java index 8ef00913fd0..9a9087420de 100644 --- a/sormas-api/src/main/java/de/symeda/sormas/api/utils/DefaultEntityHelper.java +++ b/sormas-api/src/main/java/de/symeda/sormas/api/utils/DefaultEntityHelper.java @@ -32,6 +32,7 @@ public class DefaultEntityHelper { public static final DataHelper.Pair CASE_SUP_USERNAME_AND_PASSWORD = new DataHelper.Pair<>("CaseSup", "CaseSup"); public static final DataHelper.Pair CONT_SUP_USERNAME_AND_PASSWORD = new DataHelper.Pair<>("ContSup", "ContSup"); public static final DataHelper.Pair POE_SUP_USERNAME_AND_PASSWORD = new DataHelper.Pair<>("PoeSup", "PoeSup"); + public static final DataHelper.Pair LAB_SUP_USERNAME_AND_PASSWORD = new DataHelper.Pair<>("LabSup", "LabSup"); public static final DataHelper.Pair LAB_OFF_USERNAME_AND_PASSWORD = new DataHelper.Pair<>("LabOff", "LabOff"); public static final DataHelper.Pair EVE_OFF_USERNAME_AND_PASSWORD = new DataHelper.Pair<>("EveOff", "EveOff"); public static final DataHelper.Pair NAT_USER_USERNAME_AND_PASSWORD = new DataHelper.Pair<>("NatUser", "NatUser"); @@ -51,6 +52,7 @@ public class DefaultEntityHelper { CASE_SUP_USERNAME_AND_PASSWORD, CONT_SUP_USERNAME_AND_PASSWORD, POE_SUP_USERNAME_AND_PASSWORD, + LAB_SUP_USERNAME_AND_PASSWORD, LAB_OFF_USERNAME_AND_PASSWORD, EVE_OFF_USERNAME_AND_PASSWORD, NAT_USER_USERNAME_AND_PASSWORD, From 93cf34fc5be14549d8e43fb778639152734e95af Mon Sep 17 00:00:00 2001 From: Anthony4m Date: Mon, 15 Aug 2022 15:58:36 +0000 Subject: [PATCH 08/11] Gave lab supervisor the name "lab supervisor" --- .../sormas/backend/common/StartupShutdownService.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/StartupShutdownService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/StartupShutdownService.java index d1c21cb78c0..1ff05ed7df8 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/common/StartupShutdownService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/common/StartupShutdownService.java @@ -378,6 +378,14 @@ private void createDefaultUsers() { DefaultEntityHelper.POE_SUP_USERNAME_AND_PASSWORD, u -> u.setRegion(region)); + // Create Point of Lab Supervisor + createAndPersistDefaultUser( + UserRole.LAB_SUPERVISOR, + "Laboratory", + "Supervisor", + DefaultEntityHelper.LAB_SUP_USERNAME_AND_PASSWORD, + u -> u.setLaboratory(laboratory)); + // Create Laboratory Officer createAndPersistDefaultUser( UserRole.LAB_USER, From 7fd2d330f7d1f46883769d7e6b4d131d0a250931 Mon Sep 17 00:00:00 2001 From: Anthony4m Date: Mon, 15 Aug 2022 15:59:51 +0000 Subject: [PATCH 09/11] Added lab supervisor and lab attendant for user service filtering --- .../main/java/de/symeda/sormas/backend/user/UserService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserService.java b/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserService.java index 21a52a344b8..d9119a336bc 100644 --- a/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserService.java +++ b/sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserService.java @@ -336,7 +336,7 @@ public List getLabUsersOfLab(Facility facility) { Predicate filter = cb.and( createDefaultFilter(cb, from), cb.equal(from.get(User.LABORATORY), facility), - joinRoles.in(Arrays.asList(UserRole.LAB_USER, UserRole.EXTERNAL_LAB_USER))); + joinRoles.in(Arrays.asList(UserRole.LAB_USER, UserRole.EXTERNAL_LAB_USER, UserRole.LAB_ATTENDANT, UserRole.LAB_SUPERVISOR))); cq.where(filter).distinct(true); return em.createQuery(cq).getResultList(); From deb443446d4dbe2159584675445d1847039db607 Mon Sep 17 00:00:00 2001 From: Anthony4m Date: Mon, 15 Aug 2022 16:07:27 +0000 Subject: [PATCH 10/11] added lab supervisor to the taskgrid --- .../java/de/symeda/sormas/ui/task/TaskGridComponent.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sormas-ui/src/main/java/de/symeda/sormas/ui/task/TaskGridComponent.java b/sormas-ui/src/main/java/de/symeda/sormas/ui/task/TaskGridComponent.java index 46c92370db1..68fd574f72e 100644 --- a/sormas-ui/src/main/java/de/symeda/sormas/ui/task/TaskGridComponent.java +++ b/sormas-ui/src/main/java/de/symeda/sormas/ui/task/TaskGridComponent.java @@ -139,8 +139,9 @@ public HorizontalLayout createAssigneeFilterBar() { Button myTasks = createAndAddStatusButton(Captions.taskMyTasks, MY_TASKS, buttonFilterLayout); // Default filter for lab users (that don't have any other role) is "My tasks" - if ((UserProvider.getCurrent().hasUserRole(UserRole.LAB_USER) || UserProvider.getCurrent().hasUserRole(UserRole.EXTERNAL_LAB_USER)) - && UserProvider.getCurrent().getUserRoles().size() == 1) { + if ((UserProvider.getCurrent().hasUserRole(UserRole.LAB_USER) + || UserProvider.getCurrent().hasUserRole(UserRole.EXTERNAL_LAB_USER) + || UserProvider.getCurrent().hasUserRole(UserRole.LAB_SUPERVISOR)) && UserProvider.getCurrent().getUserRoles().size() == 1) { activeStatusButton = myTasks; } else { activeStatusButton = allTasks; From 7af1749a11524adca4ba46e3b9e59e765159e331 Mon Sep 17 00:00:00 2001 From: Anthony4m Date: Mon, 15 Aug 2022 16:08:22 +0000 Subject: [PATCH 11/11] Added new users to web security to be able to log in --- .../src/main/resources/META-INF/glassfish-ejb-jar.xml | 8 ++++++++ sormas-ui/src/main/webapp/WEB-INF/glassfish-web.xml | 2 ++ sormas-ui/src/main/webapp/WEB-INF/web.xml | 6 ++++++ 3 files changed, 16 insertions(+) diff --git a/sormas-backend/src/main/resources/META-INF/glassfish-ejb-jar.xml b/sormas-backend/src/main/resources/META-INF/glassfish-ejb-jar.xml index ca03fb66794..1e4da937cef 100644 --- a/sormas-backend/src/main/resources/META-INF/glassfish-ejb-jar.xml +++ b/sormas-backend/src/main/resources/META-INF/glassfish-ejb-jar.xml @@ -46,6 +46,14 @@ LAB_USER LAB_USER + + LAB_SUPERVISOR + LAB_SUPERVISOR + + + LAB_ATTENDANT + LAB_ATTENDANT + EXTERNAL_LAB_USER EXTERNAL_LAB_USER diff --git a/sormas-ui/src/main/webapp/WEB-INF/glassfish-web.xml b/sormas-ui/src/main/webapp/WEB-INF/glassfish-web.xml index e365d2bfb00..f9a89638d27 100644 --- a/sormas-ui/src/main/webapp/WEB-INF/glassfish-web.xml +++ b/sormas-ui/src/main/webapp/WEB-INF/glassfish-web.xml @@ -17,6 +17,8 @@ CONTACT_OFFICER EVENT_OFFICER LAB_USER + LAB_SUPERVISOR + LAB_ATTENDANT EXTERNAL_LAB_USER NATIONAL_USER NATIONAL_OBSERVER diff --git a/sormas-ui/src/main/webapp/WEB-INF/web.xml b/sormas-ui/src/main/webapp/WEB-INF/web.xml index ea3f7f4f085..5354d57f4cb 100644 --- a/sormas-ui/src/main/webapp/WEB-INF/web.xml +++ b/sormas-ui/src/main/webapp/WEB-INF/web.xml @@ -36,6 +36,12 @@ LAB_USER + + LAB_SUPERVISOR + + + LAB_ATTENDANT + EXTERNAL_LAB_USER