From 5aa5cc1a1013ba2849772e3d42abdbc5ba32340f Mon Sep 17 00:00:00 2001 From: Justin Richer Date: Mon, 30 Mar 2015 12:11:45 -0400 Subject: [PATCH] added search by email to user info data stack --- .../mitre/openid/connect/model/DefaultUserInfo.java | 6 +++++- .../openid/connect/repository/UserInfoRepository.java | 9 +++++++++ .../mitre/openid/connect/service/UserInfoService.java | 8 ++++++++ .../repository/impl/JpaUserInfoRepository.java | 11 +++++++++++ .../connect/service/impl/DefaultUserInfoService.java | 5 +++++ 5 files changed, 38 insertions(+), 1 deletion(-) diff --git a/openid-connect-common/src/main/java/org/mitre/openid/connect/model/DefaultUserInfo.java b/openid-connect-common/src/main/java/org/mitre/openid/connect/model/DefaultUserInfo.java index 4fe7d914a..a55e3f9c1 100644 --- a/openid-connect-common/src/main/java/org/mitre/openid/connect/model/DefaultUserInfo.java +++ b/openid-connect-common/src/main/java/org/mitre/openid/connect/model/DefaultUserInfo.java @@ -33,15 +33,19 @@ import com.google.gson.JsonObject; @Entity @Table(name="user_info") @NamedQueries({ - @NamedQuery(name=DefaultUserInfo.QUERY_BY_USERNAME, query = "select u from DefaultUserInfo u WHERE u.preferredUsername = :" + DefaultUserInfo.PARAM_USERNAME) + @NamedQuery(name=DefaultUserInfo.QUERY_BY_USERNAME, query = "select u from DefaultUserInfo u WHERE u.preferredUsername = :" + DefaultUserInfo.PARAM_USERNAME), + @NamedQuery(name=DefaultUserInfo.QUERY_BY_EMAIL, query = "select u from DefaultUserInfo u WHERE u.email = :" + DefaultUserInfo.PARAM_EMAIL) }) public class DefaultUserInfo implements UserInfo { public static final String QUERY_BY_USERNAME = "DefaultUserInfo.getByUsername"; + public static final String QUERY_BY_EMAIL = "DefaultUserInfo.getByEmailAddress"; public static final String PARAM_USERNAME = "username"; + public static final String PARAM_EMAIL = "email"; private static final long serialVersionUID = 6078310513185681918L; + private Long id; private String sub; private String preferredUsername; diff --git a/openid-connect-common/src/main/java/org/mitre/openid/connect/repository/UserInfoRepository.java b/openid-connect-common/src/main/java/org/mitre/openid/connect/repository/UserInfoRepository.java index dbfc75af0..02f91b2f0 100644 --- a/openid-connect-common/src/main/java/org/mitre/openid/connect/repository/UserInfoRepository.java +++ b/openid-connect-common/src/main/java/org/mitre/openid/connect/repository/UserInfoRepository.java @@ -33,4 +33,13 @@ public interface UserInfoRepository { */ public UserInfo getByUsername(String username); + /** + * + * Get the UserInfo object by its email field + * + * @param email + * @return + */ + public UserInfo getByEmailAddress(String email); + } diff --git a/openid-connect-common/src/main/java/org/mitre/openid/connect/service/UserInfoService.java b/openid-connect-common/src/main/java/org/mitre/openid/connect/service/UserInfoService.java index 43ddc628c..899923533 100644 --- a/openid-connect-common/src/main/java/org/mitre/openid/connect/service/UserInfoService.java +++ b/openid-connect-common/src/main/java/org/mitre/openid/connect/service/UserInfoService.java @@ -44,4 +44,12 @@ public interface UserInfoService { */ public UserInfo getByUsernameAndClientId(String username, String clientId); + /** + * Get the user registered at this server with the given email address. + * + * @param email + * @return + */ + public UserInfo getByEmailAddress(String email); + } diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/impl/JpaUserInfoRepository.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/impl/JpaUserInfoRepository.java index 4acb2687a..59fb332c4 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/impl/JpaUserInfoRepository.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/repository/impl/JpaUserInfoRepository.java @@ -51,4 +51,15 @@ public class JpaUserInfoRepository implements UserInfoRepository { } + /** + * Get a single UserInfo object by its email address + */ + @Override + public UserInfo getByEmailAddress(String email) { + TypedQuery query = manager.createNamedQuery(DefaultUserInfo.QUERY_BY_EMAIL, DefaultUserInfo.class); + query.setParameter(DefaultUserInfo.PARAM_EMAIL, email); + + return getSingleResult(query.getResultList()); + } + } diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/service/impl/DefaultUserInfoService.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/service/impl/DefaultUserInfoService.java index d5cfd3d53..463e9c094 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/service/impl/DefaultUserInfoService.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/service/impl/DefaultUserInfoService.java @@ -69,4 +69,9 @@ public class DefaultUserInfoService implements UserInfoService { } + @Override + public UserInfo getByEmailAddress(String email) { + return userInfoRepository.getByEmailAddress(email); + } + }