diff --git a/.circleci/config.yml b/.circleci/config.yml index c0dc714..e6f6276 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -145,7 +145,7 @@ workflows: context : org-global filters: branches: - only: [dev, 'feature/RS256-Auth0'] + only: [dev, 'feature/api-call-optimization'] # Production build is executed on "master" branch only. - "build-prod": context : org-global diff --git a/src/main/java/com/appirio/tech/core/service/identity/dao/UserDAO.java b/src/main/java/com/appirio/tech/core/service/identity/dao/UserDAO.java index 04931aa..0f4c6ea 100644 --- a/src/main/java/com/appirio/tech/core/service/identity/dao/UserDAO.java +++ b/src/main/java/com/appirio/tech/core/service/identity/dao/UserDAO.java @@ -123,6 +123,15 @@ public abstract class UserDAO implements DaoBase, Transactional { ) public abstract List findUsersByEmail(@Bind("email") String email); + @RegisterMapperFactory(TCBeanMapperFactory.class) + @SqlQuery( + "SELECT " + USER_COLUMNS + ", " + + "e.address AS email, e.status_id AS emailStatus " + + "FROM common_oltp.user AS u JOIN common_oltp.email AS e ON e.user_id = u.user_id " + + "WHERE e.address = :email" + ) + public abstract List findUsersByEmailCS(@Bind("email") String email); + @RegisterMapperFactory(TCBeanMapperFactory.class) @SqlQuery( "SELECT " + USER_COLUMNS + ", " + @@ -356,6 +365,23 @@ public User findUserByEmail(String email) { return users.get(0); } + /** + * + * @param email - case sensitive search + * @return an user object or null + */ + public User findUserByEmailCS(String email) { + if(email==null || email.length()==0) + throw new IllegalArgumentException("email must be specified."); + + List users = findUsersByEmailCS(email); + if(users==null || users.size()==0) + return null; + + // if found multiple, retuning first one + return users.get(0); + } + @Transaction(TransactionIsolationLevel.READ_COMMITTED) public TCID register(User user) { if(user==null) diff --git a/src/main/java/com/appirio/tech/core/service/identity/resource/UserResource.java b/src/main/java/com/appirio/tech/core/service/identity/resource/UserResource.java index 69a7023..7945ed2 100644 --- a/src/main/java/com/appirio/tech/core/service/identity/resource/UserResource.java +++ b/src/main/java/com/appirio/tech/core/service/identity/resource/UserResource.java @@ -776,8 +776,9 @@ public ApiResponse roles( User user = null; if (!Utils.isEmpty(handle)) { user = userDao.findUserByHandle(handle); - } else{ - user = userDao.findUserByEmail(email); + } else { + // email address - case sensitive - for auth0 sepecific + user = userDao.findUserByEmailCS(email); } if(user==null) {