🗂️ src/main/java
L 📁 apiPayload
L 📁 config
L 📂 controller
L UserController
L 📂 domain
L 📁 common
L 📁 enums
L User
L 📂 dto
L 📂 request
L ChangePasswordDto
L 📁 response
L 📁 jwt
L 📂 repository
L UserRepository
L 📂 service
L UserService
L UserServiceImpl
새로운 비밀번호로 변경해보자 ❕
① UserController : JWT 토큰 값으로 해당 사용자 데이터 접근
@RestController
@RequiredArgsConstructor
@RequestMapping("/user")
public class UserController {
private final UserService userService;
@PostMapping("/change-pw")
public ApiResponse<SuccessStatus> changePassword(@RequestHeader("Authorization") String token,
@Valid @RequestBody ChangePasswordDto dto) {
String userEmail = JwtUtil.getEmail(token.substring(7));
return ApiResponse.onSuccess(userService.changePassword(userEmail, dto));
}
}
② UserRepository : 사용자 검증
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);
}
③ UserServiceImpl : 전달받은 비밀번호로 변경
@Service
@Transactional
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
public SuccessStatus changePassword(String email, ChangePasswordDto dto) {
Optional<User> user = userRepository.findByEmail(email);
if (user.isPresent()) {
user.get().updatePassword(dto.getNewPassword());
return SuccessStatus._OK;
} else {
throw new GeneralException(ErrorStatus.MEMBER_NOT_FOUND);
}
}
}
④ ChangePasswordDto : 변경할 비밀번호 받기
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class ChangePasswordDto {
private String newPassword;
}
2024.08.23 - [Spring/[P] AI 기반 사용자 맞춤형 메뉴와 맛집 추천] - [Springboot] 비밀번호 재설정 설계하기
[Springboot] 비밀번호 재설정 설계하기
📂 /user L 회원 가입 L 회원 탈퇴 L 로그인 L 로그아웃 L 비밀번호 재설정 (로그인 전) L 비밀번호 재설정 (로그인 후) ⬅️⬅️⬅️ 🔧 디자인 🔧 필요한 데이터 L newPassword 🔧
alsrudalsrudalsrud.tistory.com
'Spring > [P] AI 기반 사용자 맞춤형 메뉴와 맛집 추천' 카테고리의 다른 글
[Springboot] 식사 기록 조회 개발하기 (0) | 2024.08.28 |
---|---|
[Springboot] 식사 기록 조회 설계하기 (0) | 2024.08.27 |
[Springboot] 비밀번호 재설정 설계하기 (0) | 2024.08.23 |
[Springboot] 이메일로 임시 비밀번호 전송 개발하기 (2) controller, repository, service (0) | 2024.08.22 |
[Springboot] 이메일로 임시 비밀번호 전송 개발하기 (1) build.gradle, application.yml, dto (2) | 2024.08.21 |