summaryrefslogtreecommitdiff
path: root/microservices/03-resource-server/src/main/java/com/example/resourceserver/security/UserService.java
diff options
context:
space:
mode:
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.java47
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.
+ }
+}