From 1e2a0a757272e4f517ceb1ab4eaaeedf4bb9de70 Mon Sep 17 00:00:00 2001 From: Iris Sanchez Date: Mon, 6 Oct 2025 09:58:23 +0200 Subject: [PATCH] refactor(user-admin-service): improve UserDetailsService implementation and throw bad credentials exception when user not found --- .../SleepUp/SU/user/admin/UserAdminService.java | 4 ++-- .../SU/user/admin/UserAdminServiceImpl.java | 15 +++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/SleepUp/SU/user/admin/UserAdminService.java b/src/main/java/com/SleepUp/SU/user/admin/UserAdminService.java index 6cffdcd..0a0de32 100644 --- a/src/main/java/com/SleepUp/SU/user/admin/UserAdminService.java +++ b/src/main/java/com/SleepUp/SU/user/admin/UserAdminService.java @@ -4,11 +4,10 @@ import com.SleepUp.SU.user.dto.UserRequestAdmin; import com.SleepUp.SU.user.dto.UserResponse; import com.SleepUp.SU.user.role.Role; -import org.springframework.security.core.userdetails.UserDetailsService; import java.util.List; -public interface UserAdminService extends UserDetailsService { +public interface UserAdminService { List getAllUsers(); @@ -19,4 +18,5 @@ public interface UserAdminService extends UserDetailsService { UserResponse updateUser(Long userId, UserRequestAdmin userRequestAdmin); void deleteUserById(Long id); + } diff --git a/src/main/java/com/SleepUp/SU/user/admin/UserAdminServiceImpl.java b/src/main/java/com/SleepUp/SU/user/admin/UserAdminServiceImpl.java index e541212..4881bf5 100644 --- a/src/main/java/com/SleepUp/SU/user/admin/UserAdminServiceImpl.java +++ b/src/main/java/com/SleepUp/SU/user/admin/UserAdminServiceImpl.java @@ -1,4 +1,5 @@ package com.SleepUp.SU.user.admin; + import com.SleepUp.SU.accommodation.entity.Accommodation; import com.SleepUp.SU.accommodation.repository.AccommodationRepository; import com.SleepUp.SU.reservation.entity.Reservation; @@ -16,8 +17,10 @@ import com.SleepUp.SU.utils.EntityUtil; import com.SleepUp.SU.utils.email.EmailServiceHelper; import com.SleepUp.SU.utils.exceptions.UserNotFoundByIdException; +import com.SleepUp.SU.utils.exceptions.UserNotFoundByUsernameException; import lombok.RequiredArgsConstructor; import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -26,7 +29,7 @@ @Service @RequiredArgsConstructor -public class UserAdminServiceImpl implements UserAdminService { +public class UserAdminServiceImpl implements UserAdminService, UserDetailsService { private final UserRepository userRepository; private final UserMapper userMapper; @@ -55,7 +58,7 @@ public UserResponse createUser(UserRequest userRequest, Role role) { @Override @Transactional - public UserResponse updateUser(Long userId, UserRequestAdmin userRequestAdmin) {; + public UserResponse updateUser(Long userId, UserRequestAdmin userRequestAdmin) { User user = userServiceHelper.getUserEntityById(userId); User updatedUser = userServiceHelper.updateUserDataAdmin(userRequestAdmin, user); return userMapper.toResponse(updatedUser); @@ -93,7 +96,11 @@ public void deleteUserById(Long id){ @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { - User user = userServiceHelper.getUserEntityByUsername(username); - return new CustomUserDetails(user); + try { + User user = userServiceHelper.getUserEntityByUsername(username); + return new CustomUserDetails(user); + } catch (UserNotFoundByUsernameException ex) { + throw new UsernameNotFoundException("User with username '" + username + "' not found", ex); + } } }