diff options
Diffstat (limited to 'microservices/03-resource-server/src/main/java/com/example/resourceserver/security/UserService.java')
| -rw-r--r-- | microservices/03-resource-server/src/main/java/com/example/resourceserver/security/UserService.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/microservices/03-resource-server/src/main/java/com/example/resourceserver/security/UserService.java b/microservices/03-resource-server/src/main/java/com/example/resourceserver/security/UserService.java new file mode 100644 index 0000000..1f6ddac --- /dev/null +++ b/microservices/03-resource-server/src/main/java/com/example/resourceserver/security/UserService.java @@ -0,0 +1,47 @@ +package com.example.resourceserver.security; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Service; + +import jakarta.transaction.Transactional; + +@Service +public class UserService { + + @Autowired + private UserRepository userRepository; + + public Optional<User> findByUsername(String username) { + return userRepository.findByUsername(username); + } + + public Optional<User> findById(Long id) { + return userRepository.findById(id); + } + + public List<User> findAll() { + return userRepository.findAll(Sort.by(Sort.Direction.ASC, "username")); + } + + @PreAuthorize("hasRole('ADMIN')") + @Transactional + public void updateUser(Long id, String description) { + // Do whatever the work needed. + // ... + + Optional<User> userOpt = userRepository.findById(id); + + User user = userOpt.get(); + + user.setDescription(description); + + // NO userRepository.save(user) IS ACTUALLY REQUIRED HERE since the method + // has been annotated with @Transactional! + // Transaction commits -> Hibernate issues the SQL UPDATE. + } +} |
