xiongzhu 4 år sedan
förälder
incheckning
bb12b261c7
1 ändrade filer med 14 tillägg och 5 borttagningar
  1. 14 5
      src/main/java/com/izouma/nineth/service/UserService.java

+ 14 - 5
src/main/java/com/izouma/nineth/service/UserService.java

@@ -36,6 +36,10 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -56,11 +60,16 @@ public class UserService {
 
     public Page<User> all(PageQuery pageQuery) {
         Specification<User> specification = JpaUtils.toSpecification(pageQuery, User.class);
-        if (pageQuery.getQuery().containsKey("hasRole")) {
-            String roleName = (String) pageQuery.getQuery().get("hasRole");
-            specification = specification.and((Specification<User>) (root, criteriaQuery, criteriaBuilder) ->
-                    criteriaBuilder.isMember(Authority.get(AuthorityName.valueOf(roleName)), root.get("authorities")));
-        }
+
+        specification = specification.and((Specification<User>) (root, criteriaQuery, criteriaBuilder) -> {
+            List<Predicate> and = new ArrayList<>();
+            and.add(criteriaBuilder.notEqual(root.get("id"), 1L));
+            if (pageQuery.getQuery().containsKey("hasRole")) {
+                String roleName = (String) pageQuery.getQuery().get("hasRole");
+                and.add(criteriaBuilder.isMember(Authority.get(AuthorityName.valueOf(roleName)), root.get("authorities")));
+            }
+            return criteriaBuilder.and(and.toArray(new Predicate[0]));
+        });
         return userRepo.findAll(specification, JpaUtils.toPageRequest(pageQuery));
     }