From: Julien Lancelot Date: Tue, 30 Jan 2018 12:31:10 +0000 (+0100) Subject: SONAR-10338 Allow authentication of user using an exising email X-Git-Tag: 7.5~1718 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=465047d8b497de79ff636e98dab0e34a6edf6257;p=sonarqube.git SONAR-10338 Allow authentication of user using an exising email --- diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserDao.java index 351a9404d6f..c063482fc98 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserDao.java @@ -152,12 +152,13 @@ public class UserDao implements Dao { } /** - * Check if an active user with the given email exits in database + * Search for an active user with the given email exits in database * * Please note that email is case insensitive, result for searching 'mail@email.com' or 'Mail@Email.com' will be the same */ - public boolean doesEmailExist(DbSession dbSession, String email) { - return mapper(dbSession).countByEmail(email.toLowerCase(Locale.ENGLISH)) > 0; + @CheckForNull + public UserDto selectByEmail(DbSession dbSession, String email) { + return mapper(dbSession).selectByEmail(email.toLowerCase(Locale.ENGLISH)); } public void scrollByLogins(DbSession dbSession, Collection logins, Consumer consumer) { diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserMapper.java index cd2fc8572dc..5d816dab951 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/user/UserMapper.java @@ -52,9 +52,10 @@ public interface UserMapper { List selectByIds(@Param("ids") List ids); - void scrollAll(ResultHandler handler); + @CheckForNull + UserDto selectByEmail(String email); - long countByEmail(String email); + void scrollAll(ResultHandler handler); /** * Count actives users which are root and which login is not the specified one. diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/user/UserMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/user/UserMapper.xml index da99028da2c..d7c568696e5 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/user/UserMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/user/UserMapper.xml @@ -106,10 +106,12 @@ ORDER BY u.name - + SELECT + FROM users u - where lower(u.email)=#{email} AND u.active=${_true} + WHERE lower(u.email)=#{email, jdbcType=VARCHAR} + AND u.active=${_true}