From 7f0a1736851d4f591a1ea4be2788fc759b57c47e Mon Sep 17 00:00:00 2001 From: Dmitrii Cravcenco Date: Tue, 12 Dec 2023 10:18:50 +0200 Subject: [PATCH] Add promoting/demoting user (change user role) --- .../controller/UserController.java | 21 +++++++++++++--- .../service/AuthenticationService.java | 5 +--- .../service/UserService.java | 24 +++++++++++++++++++ 3 files changed, 43 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java index 5fbbe4f..4886484 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java @@ -59,8 +59,6 @@ public class UserController { @PatchMapping("/update-password") public ResponseEntity updateUserPassword(@RequestBody ChangePasswordRequest password) { - System.out.println("Hi"); - authenticationService.updatePassword(password.getPassword()); return ResponseEntity.status(HttpStatus.OK).build(); } @@ -102,5 +100,22 @@ public class UserController { return ResponseEntity.status(HttpStatus.OK).build(); } -} + @GetMapping("/promote/{email}") + @PreAuthorize("hasRole('ADMIN')") + public ResponseEntity promoteUser(@PathVariable String email) { + + userService.promoteUser(email); + + return ResponseEntity.status(HttpStatus.OK).build(); + } + + @GetMapping("/demote/{email}") + @PreAuthorize("hasRole('ADMIN')") + public ResponseEntity demoteUser(@PathVariable String email) { + + userService.demoteUser(email); + + return ResponseEntity.status(HttpStatus.OK).build(); + } +} \ No newline at end of file diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/AuthenticationService.java b/src/main/java/com/faf223/expensetrackerfaf/service/AuthenticationService.java index 6044361..3ec7982 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/service/AuthenticationService.java +++ b/src/main/java/com/faf223/expensetrackerfaf/service/AuthenticationService.java @@ -106,8 +106,6 @@ public class AuthenticationService { .build(); } - - public AuthenticationResponse authenticate(AuthenticationRequest request) { authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(request.getEmail(), request.getPassword())); @@ -153,8 +151,7 @@ public class AuthenticationService { updatedCredential.setPassword(passwordEncoder.encode(newPassword)); credentialRepository.save(updatedCredential); } - } - + } else throw new UserNotFoundException("User not found!"); } } diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java b/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java index 7550bac..fe3c559 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java +++ b/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java @@ -1,6 +1,7 @@ package com.faf223.expensetrackerfaf.service; import com.faf223.expensetrackerfaf.model.Credential; +import com.faf223.expensetrackerfaf.model.Role; import com.faf223.expensetrackerfaf.model.User; import com.faf223.expensetrackerfaf.repository.CredentialRepository; import com.faf223.expensetrackerfaf.repository.UserRepository; @@ -29,6 +30,7 @@ public class UserService { public User getUserById(String userUuid) { return userRepository.findById(userUuid).orElse(null); } + public User getUserByEmail(String email) { Optional credential = credentialRepository.findByEmail(email); if (credential.isPresent()) { @@ -53,4 +55,26 @@ public class UserService { } } } + + public void promoteUser(String email) { + Optional credential = credentialRepository.findByEmail(email); + if (credential.isPresent()) { + + System.out.println(email); + Credential updatedCredential = credential.get(); + updatedCredential.setRole(Role.ROLE_ADMIN); + credentialRepository.save(updatedCredential); + } + } + + public void demoteUser(String email) { + Optional credential = credentialRepository.findByEmail(email); + if (credential.isPresent()) { + + System.out.println(email); + Credential updatedCredential = credential.get(); + updatedCredential.setRole(Role.ROLE_USER); + credentialRepository.save(updatedCredential); + } + } } \ No newline at end of file