NCP-3 add exception,add change password logic, fix checkauthtoken

This commit is contained in:
vladp
2025-11-27 03:05:07 +07:00
parent c2d44b3428
commit ffb1d811a8
18 changed files with 212 additions and 59 deletions
@@ -2,13 +2,20 @@ package ru.soune.no_copy.controller;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import ru.soune.no_copy.dto.ChangePasswordRequest;
import ru.soune.no_copy.dto.UserDTO;
import ru.soune.no_copy.entity.AuthToken;
import ru.soune.no_copy.entity.User;
import ru.soune.no_copy.exception.InvalidUserEmail;
import ru.soune.no_copy.exception.NotFoundAuthToken;
import ru.soune.no_copy.mapper.UserMapper;
import ru.soune.no_copy.repository.AuthTokenRepository;
import ru.soune.no_copy.repository.UserRepository;
import ru.soune.no_copy.service.UserService;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("/api/user")
@@ -17,12 +24,41 @@ public class UserController {
private final UserRepository userRepository;
private final UserService userService;
private final AuthTokenRepository authTokenRepository;
private final UserMapper userMapper;
@GetMapping("/all")
public ResponseEntity<List<UserDTO>> getAllUsers() {
List<UserDTO> allUsers = userRepository.findAll().stream()
.map(u -> new UserDTO(u.getFirstName(), u.getEmail(), u.getIsActive()))
.map(u -> new UserDTO(u.getFullName(), u.getCompany(), u.getEmail(), u.getIsActive(),
u.getPhone(), u.getGenderType(),
u.getBirthday(), u.getCreatedAt()))
.toList();
return ResponseEntity.ok(allUsers);
}
//TODO fix mapper,doesnot exist all fields
@PostMapping("/change-password")
public ResponseEntity<UserDTO> updateUser(@RequestBody ChangePasswordRequest changePasswordRequest,
@RequestHeader("Authorization") String tokenHeader) {
String token = tokenHeader.replace("Bearer ", "");
Optional<AuthToken> tokenOptional = authTokenRepository.findByToken(token);
AuthToken authToken = tokenOptional.orElseThrow(() -> new NotFoundAuthToken("Token: " + token + "not found"));
User user = authToken.getUser();
if (!changePasswordRequest.getEmail().equals(user.getEmail())) {
throw new InvalidUserEmail("Email is not valid: " + changePasswordRequest.getEmail() + "not found");
}
User updateUser = userService.changePassword(user, changePasswordRequest);
return ResponseEntity.ok(userMapper.toDTO(updateUser));
}
}