Testing branch #47

Merged
DmitriiKaban merged 4 commits from testing_branch into master 2023-12-12 07:51:07 +00:00
3 changed files with 48 additions and 1 deletions
Showing only changes of commit 3a79741101 - Show all commits

View File

@@ -1,11 +1,13 @@
package com.faf223.expensetrackerfaf.controller; package com.faf223.expensetrackerfaf.controller;
import com.faf223.expensetrackerfaf.controller.auth.ChangePasswordRequest;
import com.faf223.expensetrackerfaf.dto.UserCreationDTO; import com.faf223.expensetrackerfaf.dto.UserCreationDTO;
import com.faf223.expensetrackerfaf.dto.UserDTO; import com.faf223.expensetrackerfaf.dto.UserDTO;
import com.faf223.expensetrackerfaf.dto.mappers.UserMapper; import com.faf223.expensetrackerfaf.dto.mappers.UserMapper;
import com.faf223.expensetrackerfaf.model.Credential; import com.faf223.expensetrackerfaf.model.Credential;
import com.faf223.expensetrackerfaf.model.User; import com.faf223.expensetrackerfaf.model.User;
import com.faf223.expensetrackerfaf.repository.CredentialRepository; import com.faf223.expensetrackerfaf.repository.CredentialRepository;
import com.faf223.expensetrackerfaf.service.AuthenticationService;
import com.faf223.expensetrackerfaf.service.UserService; import com.faf223.expensetrackerfaf.service.UserService;
import com.faf223.expensetrackerfaf.util.errors.ErrorResponse; import com.faf223.expensetrackerfaf.util.errors.ErrorResponse;
import com.faf223.expensetrackerfaf.util.exceptions.UserNotCreatedException; import com.faf223.expensetrackerfaf.util.exceptions.UserNotCreatedException;
@@ -34,11 +36,12 @@ public class UserController {
private final UserService userService; private final UserService userService;
private final UserMapper userMapper; private final UserMapper userMapper;
private final CredentialRepository credentialRepository; private final CredentialRepository credentialRepository;
private final AuthenticationService authenticationService;
@PatchMapping() @PatchMapping()
public ResponseEntity<UserDTO> updateUser(@RequestBody @Valid UserCreationDTO userDTO, public ResponseEntity<UserDTO> updateUser(@RequestBody @Valid UserCreationDTO userDTO,
BindingResult bindingResult) { BindingResult bindingResult) {
if(bindingResult.hasErrors()) if (bindingResult.hasErrors())
throw new UserNotCreatedException(ErrorResponse.from(bindingResult).getMessage()); throw new UserNotCreatedException(ErrorResponse.from(bindingResult).getMessage());
User user = userMapper.toUser(userDTO); User user = userMapper.toUser(userDTO);
@@ -53,6 +56,15 @@ public class UserController {
} }
} }
@PatchMapping("/update-password")
public ResponseEntity<Void> updateUserPassword(@RequestBody ChangePasswordRequest password) {
System.out.println("Hi");
authenticationService.updatePassword(password.getPassword());
return ResponseEntity.status(HttpStatus.OK).build();
}
@GetMapping("/get-user-data") @GetMapping("/get-user-data")
public ResponseEntity<Map<String, String>> getUser() { public ResponseEntity<Map<String, String>> getUser() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

View File

@@ -0,0 +1,14 @@
package com.faf223.expensetrackerfaf.controller.auth;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ChangePasswordRequest {
private String password;
}

View File

@@ -15,6 +15,8 @@ import com.faf223.expensetrackerfaf.util.exceptions.UserNotFoundException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.oauth2.core.user.OAuth2User; import org.springframework.security.oauth2.core.user.OAuth2User;
@@ -27,6 +29,7 @@ import java.util.Optional;
public class AuthenticationService { public class AuthenticationService {
private final UserRepository userRepository; private final UserRepository userRepository;
private final UserService userService;
private final CredentialRepository credentialRepository; private final CredentialRepository credentialRepository;
private final PasswordEncoder passwordEncoder; private final PasswordEncoder passwordEncoder;
private final JwtService jwtService; private final JwtService jwtService;
@@ -136,4 +139,22 @@ public class AuthenticationService {
} }
} }
public void updatePassword(String newPassword) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null && authentication.getPrincipal() instanceof UserDetails userDetails) {
User user = userService.getUserByEmail(userDetails.getUsername());
Optional<Credential> credential = credentialRepository.findByUser(user);
if (credential.isPresent()) {
Credential updatedCredential = credential.get();
updatedCredential.setPassword(passwordEncoder.encode(newPassword));
credentialRepository.save(updatedCredential);
}
}
}
} }