From ca1c1473a441dc079219f19059a142a56fb92be3 Mon Sep 17 00:00:00 2001 From: Dmitrii Cravcenco Date: Sun, 10 Dec 2023 14:43:20 +0200 Subject: [PATCH] User data returns user role --- .../controller/UserController.java | 23 +++++++++++++++++-- .../faf223/expensetrackerfaf/dto/UserDTO.java | 1 - .../repository/CredentialRepository.java | 3 +++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java index 160be82..e0ad7ba 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java @@ -3,7 +3,9 @@ package com.faf223.expensetrackerfaf.controller; import com.faf223.expensetrackerfaf.dto.UserCreationDTO; import com.faf223.expensetrackerfaf.dto.UserDTO; import com.faf223.expensetrackerfaf.dto.mappers.UserMapper; +import com.faf223.expensetrackerfaf.model.Credential; import com.faf223.expensetrackerfaf.model.User; +import com.faf223.expensetrackerfaf.repository.CredentialRepository; import com.faf223.expensetrackerfaf.service.UserService; import com.faf223.expensetrackerfaf.util.errors.ErrorResponse; import com.faf223.expensetrackerfaf.util.exceptions.UserNotCreatedException; @@ -19,6 +21,9 @@ import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; @RestController @RequestMapping("/users") @@ -27,6 +32,7 @@ public class UserController { private final UserService userService; private final UserMapper userMapper; + private final CredentialRepository credentialRepository; @PatchMapping() public ResponseEntity updateUser(@RequestBody @Valid UserCreationDTO userDTO, @@ -35,21 +41,34 @@ public class UserController { throw new UserNotCreatedException(ErrorResponse.from(bindingResult).getMessage()); User user = userMapper.toUser(userDTO); + if (!bindingResult.hasErrors()) { + userService.updateUser(user); return ResponseEntity.ok(userMapper.toDto(user)); + } else { throw new UserNotFoundException("The user has not been found"); } } @GetMapping("/get-user-data") - public ResponseEntity getUser() { + public ResponseEntity> getUser() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null && authentication.getPrincipal() instanceof UserDetails userDetails) { User user = userService.getUserByEmail(userDetails.getUsername()); - if (user != null) return ResponseEntity.ok(userMapper.toDto(user)); + Optional credential = credentialRepository.findByUser(user); + + if (credential.isPresent()) { + Map userData = new HashMap<>(); + userData.put("firstname", user.getFirstName()); + userData.put("lastname", user.getLastName()); + userData.put("username", user.getUsername()); + userData.put("userrole", credential.get().getRole().toString()); // Assuming UserRole is an enum + + return ResponseEntity.ok(userData); + } } throw new UserNotFoundException("The user has not been found"); } diff --git a/src/main/java/com/faf223/expensetrackerfaf/dto/UserDTO.java b/src/main/java/com/faf223/expensetrackerfaf/dto/UserDTO.java index e2024b1..bae5e2a 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/dto/UserDTO.java +++ b/src/main/java/com/faf223/expensetrackerfaf/dto/UserDTO.java @@ -17,5 +17,4 @@ public class UserDTO { @NotNull(message = "Username must not be null") @NotEmpty(message = "Username must not be empty") private String username; - } diff --git a/src/main/java/com/faf223/expensetrackerfaf/repository/CredentialRepository.java b/src/main/java/com/faf223/expensetrackerfaf/repository/CredentialRepository.java index 065212d..2f92332 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/repository/CredentialRepository.java +++ b/src/main/java/com/faf223/expensetrackerfaf/repository/CredentialRepository.java @@ -1,6 +1,7 @@ package com.faf223.expensetrackerfaf.repository; import com.faf223.expensetrackerfaf.model.Credential; +import com.faf223.expensetrackerfaf.model.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -9,4 +10,6 @@ import java.util.Optional; @Repository public interface CredentialRepository extends JpaRepository { Optional findByEmail(String email); + + Optional findByUser(User user); } \ No newline at end of file