From d7267073623f317a89060554bfaeaa439a3dac63 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Tue, 30 Jul 2024 08:03:14 +0200 Subject: [PATCH] Hotfix change user password --- .docker/docker-compose.yml | 2 +- .../src/main/java/at/tuwien/endpoints/UserEndpoint.java | 5 ++--- .../java/at/tuwien/service/AuthenticationService.java | 3 ++- .../at/tuwien/service/impl/AuthenticationServiceImpl.java | 8 +++++--- docker-compose.yml | 2 +- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.docker/docker-compose.yml b/.docker/docker-compose.yml index 8dc5db98aa..27d53063c3 100644 --- a/.docker/docker-compose.yml +++ b/.docker/docker-compose.yml @@ -428,7 +428,7 @@ services: BROKER_EXCHANGE_NAME: ${BROKER_EXCHANGE_NAME:-dbrepo} BROKER_QUEUE_NAME: ${BROKER_QUEUE_NAME:-dbrepo} BROKER_HOST: "${BROKER_ENDPOINT:-broker-service}" - BROKER_PASSWORD: ${SYSTEM_USERNAME:-admin} + BROKER_PASSWORD: ${SYSTEM_PASSWORD:-admin} BROKER_PORT: ${BROKER_PORT:-5672} BROKER_SERVICE_ENDPOINT: ${BROKER_SERVICE_ENDPOINT:-http://gateway-service/admin/broker} BROKER_USERNAME: ${SYSTEM_USERNAME:-admin} diff --git a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java index 19e3a1df06..173b3ef95d 100644 --- a/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java +++ b/dbrepo-metadata-service/rest-service/src/main/java/at/tuwien/endpoints/UserEndpoint.java @@ -326,7 +326,7 @@ public class UserEndpoint { } @PutMapping("/{userId}/password") - @Transactional + @Transactional(rollbackFor = {Exception.class}) @PreAuthorize("isAuthenticated()") @Observed(name = "dbrepo_user_password_modify") @Operation(summary = "Update user password", @@ -367,12 +367,11 @@ public class UserEndpoint { AuthServiceConnectionException, UserNotFoundException, DatabaseNotFoundException, DataServiceException, DataServiceConnectionException, CredentialsInvalidException { log.debug("endpoint modify a user password, userId={}, data.password=(hidden)", userId); - User user = userService.findById(userId); + final User user = userService.findById(userId); if (!user.equals(principal)) { log.error("Failed to modify user password: not current user"); throw new NotAllowedException("Failed to modify user password: not current user"); } - user = userService.findByUsername(principal.getName()); userService.updatePassword(user, data); authenticationService.updatePassword(user, data); for (Database database : databaseService.findAllAccess(userId)) { diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java index 7127138fab..eb378290aa 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/AuthenticationService.java @@ -60,5 +60,6 @@ public interface AuthenticationService { * @throws AuthServiceException The auth service responded with unexpected behavior. * @throws AuthServiceConnectionException The connection with the auth service could not be established. */ - void updatePassword(User user, UserPasswordDto data) throws AuthServiceException, AuthServiceConnectionException, CredentialsInvalidException; + void updatePassword(User user, UserPasswordDto data) throws AuthServiceException, AuthServiceConnectionException, + CredentialsInvalidException, UserNotFoundException; } diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java index 460845e897..52aa504889 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/AuthenticationServiceImpl.java @@ -43,7 +43,8 @@ public class AuthenticationServiceImpl implements AuthenticationService { @Override public void delete(User user) throws AuthServiceException, AuthServiceConnectionException, UserNotFoundException, CredentialsInvalidException { - keycloakGateway.deleteUser(user.getId()); + final UserDto keycloakUser = findByUsername(user.getUsername()); + keycloakGateway.deleteUser(keycloakUser.getId()); } @Override @@ -72,8 +73,9 @@ public class AuthenticationServiceImpl implements AuthenticationService { @Override public void updatePassword(User user, UserPasswordDto data) throws AuthServiceException, - AuthServiceConnectionException, CredentialsInvalidException { - keycloakGateway.updateUserCredentials(user.getId(), data); + AuthServiceConnectionException, CredentialsInvalidException, UserNotFoundException { + final UserDto keycloakUser = findByUsername(user.getUsername()); + keycloakGateway.updateUserCredentials(keycloakUser.getId(), data); } } diff --git a/docker-compose.yml b/docker-compose.yml index c2b70d3335..c2927c1c65 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -493,7 +493,7 @@ services: BROKER_EXCHANGE_NAME: ${BROKER_EXCHANGE_NAME:-dbrepo} BROKER_QUEUE_NAME: ${BROKER_QUEUE_NAME:-dbrepo} BROKER_HOST: "${BROKER_ENDPOINT:-broker-service}" - BROKER_PASSWORD: ${SYSTEM_USERNAME:-admin} + BROKER_PASSWORD: ${SYSTEM_PASSWORD:-admin} BROKER_PORT: ${BROKER_PORT:-5672} BROKER_SERVICE_ENDPOINT: ${BROKER_SERVICE_ENDPOINT:-http://gateway-service/admin/broker} BROKER_USERNAME: ${SYSTEM_USERNAME:-admin} -- GitLab