Skip to content

Commit 083e980

Browse files
committed
Adds method to look for accounts missing a subject
1 parent 8d6572c commit 083e980

File tree

1 file changed

+23
-2
lines changed
  • pic-sure-auth-services/src/main/java/edu/harvard/hms/dbmi/avillach/auth/data/repository

1 file changed

+23
-2
lines changed

pic-sure-auth-services/src/main/java/edu/harvard/hms/dbmi/avillach/auth/data/repository/UserRepository.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,19 @@ public User findBySubject(String subject) {
4242
.getSingleResult();
4343
}
4444

45+
public User findByEmailAndConnection(String email, String connectionId) {
46+
CriteriaQuery<User> query = em.getCriteriaBuilder().createQuery(User.class);
47+
Root<User> queryRoot = query.from(User.class);
48+
query.select(queryRoot);
49+
CriteriaBuilder cb = cb();
50+
return em.createQuery(query
51+
.where(
52+
cb.equal(queryRoot.join("connection")
53+
.get("id"), connectionId),
54+
eq(cb, queryRoot, "email", email)))
55+
.getSingleResult();
56+
}
57+
4558
public User findBySubjectAndConnection(String subject, String connectionId) {
4659
CriteriaQuery<User> query = em.getCriteriaBuilder().createQuery(User.class);
4760
Root<User> queryRoot = query.from(User.class);
@@ -86,8 +99,16 @@ public User findOrCreate(User inputUser) {
8699
+ ", subject: " + user.getSubject());
87100
} catch (NoResultException e) {
88101
logger.debug("findOrCreate() subject " + subject +
89-
" could not be found by `entityManager`, going to create a new user.");
90-
user = createUser(inputUser);
102+
" could not be found by `entityManager`, checking by email and connection");
103+
try {
104+
// If the user isn't found by subject then check by email and connection just
105+
// in case they were created by jenkins
106+
user = findByEmailAndConnection(inputUser.getEmail(), inputUser.getConnection().getId());
107+
} catch (NoResultException ex) {
108+
logger.debug("findOrCreate() email " + inputUser.getEmail() +
109+
" could not be found by `entityManager`, creating a new user");
110+
user = createUser(inputUser);
111+
}
91112
} catch (NonUniqueResultException e) {
92113
logger.error("findOrCreate() " + e.getClass().getSimpleName() + ": " + e.getMessage());
93114
}

0 commit comments

Comments
 (0)