From e565828aa3e15887d45cc0346a8f7f16f2cb92c6 Mon Sep 17 00:00:00 2001 From: TCHERNIATINSKY <philippe.tcherniatinsky@inrae.fr> Date: Tue, 26 Sep 2023 10:07:54 +0200 Subject: [PATCH 1/3] correction 154-message-d-erreur-abscons-suite-a-tentative-de-creation-de-compte-avec-nouvel-identifiant-mais #154 --- .../persistence/AuthenticationService.java | 7 ++--- .../oresing/persistence/UserRepository.java | 26 ++++++++++++++----- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/main/java/fr/inra/oresing/persistence/AuthenticationService.java b/src/main/java/fr/inra/oresing/persistence/AuthenticationService.java index 86c820db4..9ef753af7 100644 --- a/src/main/java/fr/inra/oresing/persistence/AuthenticationService.java +++ b/src/main/java/fr/inra/oresing/persistence/AuthenticationService.java @@ -495,8 +495,9 @@ public class AuthenticationService { private OreSiUser updateAccount(OreSiUser user, CreateUserRequest createUserRequest) throws AuthenticationFailure, NoSuchAlgorithmException, InvalidKeySpecException, JsonProcessingException { String email = Optional.ofNullable(createUserRequest.getEmail()) .filter(mail -> !Strings.isNullOrEmpty(mail)) - .orElse(user.getEmail()); - boolean emailChanged = !user.getEmail().equals(email); + .orElse(user.getEmail()) + .toLowerCase(); + boolean emailChanged = !user.getEmail().toLowerCase().equals(email); if (createUserRequest.getNewPassword() != null) { Optional.of(createUserRequest.getNewPassword()) .filter(password -> !Strings.isNullOrEmpty(password)) @@ -507,7 +508,7 @@ public class AuthenticationService { } if (emailChanged) { user.setAccountstate(OreSiUser.OreSiUserStates.pending); - user.setEmail(createUserRequest.getEmail()); + user.setEmail(createUserRequest.getEmail().toLowerCase()); } setRoleAdmin(); OreSiUser updateUser = userRepository.update(user); diff --git a/src/main/java/fr/inra/oresing/persistence/UserRepository.java b/src/main/java/fr/inra/oresing/persistence/UserRepository.java index 80df53f5e..13c9c5523 100644 --- a/src/main/java/fr/inra/oresing/persistence/UserRepository.java +++ b/src/main/java/fr/inra/oresing/persistence/UserRepository.java @@ -27,9 +27,23 @@ public class UserRepository extends JsonTableRepositoryTemplate<OreSiUser> { @Override protected String getUpsertQuery() { - return "INSERT INTO " + getTable().getSqlIdentifier() + " (id, login, password, email, accountstate, authorizations, chartes) SELECT id, login, password, email, accountstate, authorizations, chartes FROM json_populate_recordset(NULL::" + getTable().getSqlIdentifier() + ", :json::json)" - + " ON CONFLICT (id) DO UPDATE SET updateDate=current_timestamp, login=EXCLUDED.login, password=EXCLUDED.password, email=EXCLUDED.email, accountstate=EXCLUDED.accountstate, authorizations=EXCLUDED.authorizations, chartes=EXCLUDED.chartes" - + " RETURNING id"; + return """ + INSERT INTO %1$s ( + id, login, password, email, accountstate, authorizations, chartes + ) + SELECT + id, lower(login), password, lower(email), accountstate, authorizations, chartes + FROM json_populate_recordset(NULL::%1$s, :json::json) + ON CONFLICT (id) + DO UPDATE SET + updateDate=current_timestamp, + login=lower(EXCLUDED.login), + password=EXCLUDED.password, + email=lower(EXCLUDED.email), + accountstate=EXCLUDED.accountstate, + authorizations=EXCLUDED.authorizations, + chartes=EXCLUDED.chartes RETURNING id""" + .formatted(getTable().getSqlIdentifier()); } @Override @@ -44,7 +58,7 @@ public class UserRepository extends JsonTableRepositoryTemplate<OreSiUser> { public Optional<OreSiUser> findByLogin(String login) { String query = "SELECT '" + getEntityClass().getName() + "' as \"@class\", to_jsonb(t) as json FROM " + getTable().getSqlIdentifier() + " t " + - "WHERE login = :login"; + "WHERE lower(login) = lower(:login)"; Optional<OreSiUser> result = getNamedParameterJdbcTemplate().query(query, new MapSqlParameterSource("login", login), getJsonRowMapper()).stream() @@ -54,7 +68,7 @@ public class UserRepository extends JsonTableRepositoryTemplate<OreSiUser> { public Optional<OreSiUser> findByEmail(String email) { String query = "SELECT '" + getEntityClass().getName() + "' as \"@class\", to_jsonb(t) as json FROM " + getTable().getSqlIdentifier() + " t " + - "WHERE email = :email"; + "WHERE lower(email) = lower(:email)"; Optional<OreSiUser> result = getNamedParameterJdbcTemplate().query(query, new MapSqlParameterSource("email", email), getJsonRowMapper()).stream() @@ -64,7 +78,7 @@ public class UserRepository extends JsonTableRepositoryTemplate<OreSiUser> { public Optional<OreSiUser> findByLoginAndEmail(String login, String email) { String query = "SELECT '" + getEntityClass().getName() + "' as \"@class\", to_jsonb(t) as json FROM " + getTable().getSqlIdentifier() + " t " + - "WHERE email = :email and login = :login"; + "WHERE lower(email) = lower(:email) and lower(login = lower(:login)"; MapSqlParameterSource mapSqlParameterSource = new MapSqlParameterSource("login", login); mapSqlParameterSource.addValue("email", email); -- GitLab From 29955771a4a93bbc990cbdd4ae76a8c6c6f7cf33 Mon Sep 17 00:00:00 2001 From: TCHERNIATINSKY <philippe.tcherniatinsky@inrae.fr> Date: Tue, 26 Sep 2023 14:43:47 +0200 Subject: [PATCH 2/3] Parenthese manquuante --- src/main/java/fr/inra/oresing/persistence/UserRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/inra/oresing/persistence/UserRepository.java b/src/main/java/fr/inra/oresing/persistence/UserRepository.java index 13c9c5523..949c1b298 100644 --- a/src/main/java/fr/inra/oresing/persistence/UserRepository.java +++ b/src/main/java/fr/inra/oresing/persistence/UserRepository.java @@ -78,7 +78,7 @@ public class UserRepository extends JsonTableRepositoryTemplate<OreSiUser> { public Optional<OreSiUser> findByLoginAndEmail(String login, String email) { String query = "SELECT '" + getEntityClass().getName() + "' as \"@class\", to_jsonb(t) as json FROM " + getTable().getSqlIdentifier() + " t " + - "WHERE lower(email) = lower(:email) and lower(login = lower(:login)"; + "WHERE lower(email) = lower(:email) and lower(login) = lower(:login)"; MapSqlParameterSource mapSqlParameterSource = new MapSqlParameterSource("login", login); mapSqlParameterSource.addValue("email", email); -- GitLab From 6b118a584457a6ef5b91922d5572ee41cde702e5 Mon Sep 17 00:00:00 2001 From: TCHERNIATINSKY <philippe.tcherniatinsky@inrae.fr> Date: Tue, 26 Sep 2023 14:44:05 +0200 Subject: [PATCH 3/3] =?UTF-8?q?R=C3=A9=C3=A9criture=20de=20deploy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pom.xml b/pom.xml index 19cf02bee..537faf7fe 100644 --- a/pom.xml +++ b/pom.xml @@ -312,6 +312,22 @@ <url>https://forgemia.inra.fr/api/v4/projects/${env.CI_PROJECT_ID}/packages/maven</url> </snapshotRepository> </distributionManagement> + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + <executions> + <execution> + <id>repackage</id> + <configuration> + <classifier>exec</classifier> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> </profile> <profile> -- GitLab