Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit d104bfb

Browse files
SORMAS-Foundation#3169 - Added default filter to UserService to exclude inactive users
1 parent b1680cd commit d104bfb

4 files changed

Lines changed: 20 additions & 11 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/user/UserFacade.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public interface UserFacade {
5959
*/
6060
List<UserReferenceDto> getUserRefsByDistrict(DistrictReferenceDto district, boolean includeSupervisors, UserRole... userRoles);
6161

62-
List<UserReferenceDto> getAllUserRefs();
62+
List<UserReferenceDto> getAllUserRefs(boolean includeInactive);
6363

6464
List<UserDto> getUsersByAssociatedOfficer(UserReferenceDto associatedOfficer, UserRole... userRoles);
6565

sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserFacadeEjb.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ public List<UserReferenceDto> getUserRefsByDistrict(DistrictReferenceDto distric
139139
}
140140

141141
@Override
142-
public List<UserReferenceDto> getAllUserRefs() {
143-
return userService.getAllInJurisdiction().stream().map(c -> toReferenceDto(c)).collect(Collectors.toList());
142+
public List<UserReferenceDto> getAllUserRefs(boolean includeInactive) {
143+
return userService.getAllInJurisdiction(includeInactive).stream().map(c -> toReferenceDto(c)).collect(Collectors.toList());
144144
}
145145

146146
@Override

sormas-backend/src/main/java/de/symeda/sormas/backend/user/UserService.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ private List<User> getAllByRegionAndUserRoles(
119119
CriteriaQuery<User> cq = cb.createQuery(getElementClass());
120120
Root<User> from = cq.from(getElementClass());
121121

122-
Predicate filter = null;
122+
Predicate filter = createDefaultFilter(cb, from);
123123
if (region != null) {
124124
filter = cb.equal(from.get(User.REGION), region);
125125
}
@@ -155,6 +155,7 @@ public List<User> getInformantsOfFacility(Facility facility) {
155155
Join<User, UserRole> joinRoles = from.join(User.USER_ROLES, JoinType.LEFT);
156156

157157
Predicate filter = cb.and(
158+
createDefaultFilter(cb, from),
158159
cb.equal(from.get(User.HEALTH_FACILITY), facility),
159160
joinRoles.in(
160161
Arrays.asList(
@@ -177,6 +178,7 @@ public List<User> getLabUsersOfLab(Facility facility) {
177178
Join<User, UserRole> joinRoles = from.join(User.USER_ROLES, JoinType.LEFT);
178179

179180
Predicate filter = cb.and(
181+
createDefaultFilter(cb, from),
180182
cb.equal(from.get(User.LABORATORY), facility),
181183
joinRoles.in(
182184
Arrays.asList(
@@ -213,7 +215,7 @@ private List<User> getAllByDistrict(
213215
CriteriaQuery<User> cq = cb.createQuery(getElementClass());
214216
Root<User> from = cq.from(getElementClass());
215217

216-
Predicate filter = buildDistrictFilter(cb, cq, from, district, includeSupervisors, userRoles);
218+
Predicate filter = cb.and(createDefaultFilter(cb, from), buildDistrictFilter(cb, cq, from, district, includeSupervisors, userRoles));
217219

218220
if (createExtraFilters != null) {
219221
filter = and(cb, filter, createExtraFilters.apply(cb, from));
@@ -239,7 +241,7 @@ public List<User> getAllByAssociatedOfficer(User associatedOfficer, UserRole...
239241
CriteriaQuery<User> cq = cb.createQuery(getElementClass());
240242
Root<User> from = cq.from(getElementClass());
241243

242-
Predicate filter = cb.and(cb.equal(from.get(User.ASSOCIATED_OFFICER), associatedOfficer));
244+
Predicate filter = cb.and(createDefaultFilter(cb, from), cb.equal(from.get(User.ASSOCIATED_OFFICER), associatedOfficer));
243245
filter = and(cb, filter, buildUserRolesFilter(from, Arrays.asList(userRoles)));
244246
cq.where(filter);
245247

@@ -248,13 +250,17 @@ public List<User> getAllByAssociatedOfficer(User associatedOfficer, UserRole...
248250
return em.createQuery(cq).getResultList();
249251
}
250252

251-
public List<User> getAllInJurisdiction() {
253+
public List<User> getAllInJurisdiction(boolean includeInactive) {
252254
CriteriaBuilder cb = em.getCriteriaBuilder();
253255
CriteriaQuery<User> cq = cb.createQuery(getElementClass());
254256
Root<User> from = cq.from(getElementClass());
255257

256258
Predicate jurisdictionFilter = createJurisdictionFilter(cb, from);
257259

260+
if (!includeInactive) {
261+
jurisdictionFilter = and(cb, jurisdictionFilter, createDefaultFilter(cb, from));
262+
}
263+
258264
if (jurisdictionFilter != null) {
259265
cq.where(jurisdictionFilter);
260266
}
@@ -270,7 +276,6 @@ public boolean isLoginUnique(String uuid, String userName) {
270276
CriteriaQuery<User> cq = cb.createQuery(getElementClass());
271277
Root<User> from = cq.from(getElementClass());
272278

273-
274279
Expression<String> userNameExpression = from.get(User.USER_NAME);
275280
String userNameParamValue = userName;
276281
if (!AuthProvider.getProvider().isUsernameCaseSensitive()) {
@@ -401,8 +406,8 @@ private Predicate buildDistrictFilter(
401406

402407
if (includeSupervisors) {
403408
Join<User, UserRole> joinRoles = from.join(User.USER_ROLES, JoinType.LEFT);
404-
Predicate supervisorFilter =
405-
joinRoles.in(Arrays.asList(UserRole.CASE_SUPERVISOR, UserRole.CONTACT_SUPERVISOR, UserRole.SURVEILLANCE_SUPERVISOR, UserRole.ADMIN_SUPERVISOR));
409+
Predicate supervisorFilter = joinRoles.in(
410+
Arrays.asList(UserRole.CASE_SUPERVISOR, UserRole.CONTACT_SUPERVISOR, UserRole.SURVEILLANCE_SUPERVISOR, UserRole.ADMIN_SUPERVISOR));
406411
if (filter != null) {
407412
filter = cb.or(filter, supervisorFilter);
408413
} else {
@@ -450,4 +455,8 @@ public boolean hasRight(UserRight right) {
450455
User currentUser = getCurrentUser();
451456
return userRoleConfigFacade.getEffectiveUserRights(currentUser.getUserRoles().toArray(new UserRole[0])).contains(right);
452457
}
458+
459+
public Predicate createDefaultFilter(CriteriaBuilder cb, From<?, User> root) {
460+
return cb.isTrue(root.get(User.ACTIVE));
461+
}
453462
}

sormas-ui/src/main/java/de/symeda/sormas/ui/task/TaskEditForm.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ protected void addFields() {
199199
users = FacadeProvider.getUserFacade().getUsersByRegionAndRoles(region);
200200
} else {
201201
// fallback - just show all users
202-
users = FacadeProvider.getUserFacade().getAllUserRefs();
202+
users = FacadeProvider.getUserFacade().getAllUserRefs(false);
203203
}
204204

205205
// Validation

0 commit comments

Comments
 (0)