public PageList<Subject> findSubjectsByCriteria(Subject subject, SubjectCriteria criteria) { CriteriaQueryGenerator generator = new CriteriaQueryGenerator(subject, criteria); CriteriaQueryRunner<Subject> queryRunner = new CriteriaQueryRunner<Subject>(criteria, generator, entityManager); PageList<Subject> subjects = queryRunner.execute(); boolean canViewUsers = (authorizationManager.isSystemSuperuser(subject) || authorizationManager.hasGlobalPermission(subject, Permission.MANAGE_SECURITY) || authorizationManager .hasGlobalPermission(subject, Permission.VIEW_USERS)); if (!canViewUsers) { if (subjects.contains(subject)) { Subject attachedSubject = subjects.get(subjects.indexOf(subject)); subjects.clear(); subjects.add(attachedSubject); } else { subjects.clear(); } subjects.setTotalSize(subjects.size()); } return subjects; }