Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
authorizeRequests
.requestMatchers("/api/v1/auth/login", "/api/v1/auth/signup", "/api/v1/test",
"/api/v1/auth/check-email", "/api/v1/auth/check-nickname", "/api/v1/auth/reissue",
"/api/v1/auth", "/oauth2/", "/login/oauth2/", "/ws/**").permitAll()
"/api/v1/auth", "/oauth2/", "/login/oauth2/", "/ws/**", "/users/reset-password").permitAll()
.anyRequest()
.authenticated()
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package site.coach_coach.coach_coach_server.user.controller;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import lombok.RequiredArgsConstructor;
import site.coach_coach.coach_coach_server.user.dto.ResetPasswordRequest;
import site.coach_coach.coach_coach_server.user.service.UserService;

@RestController
@RequestMapping("/users")
@RequiredArgsConstructor
public class PasswordController {

private final UserService userService;

@PatchMapping("/reset-password")
public ResponseEntity<Void> resetPassword(@RequestBody ResetPasswordRequest request) {
userService.resetPassword(request.getEmail(), request.getPassword());
return ResponseEntity.noContent().build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -121,4 +121,8 @@ public void signUpOAuth2(String nickname, String email, String username) {
public void promoteToCoach() {
this.isCoach = true;
}

public void updatePassword(String encodedPassword) {
this.password = encodedPassword;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package site.coach_coach.coach_coach_server.user.dto;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResetPasswordRequest {
private String email;
private String password;
}
Original file line number Diff line number Diff line change
Expand Up @@ -206,4 +206,19 @@ private User buildUserForSignUp(SignUpRequest signUpRequest) {
.isSocial(false)
.build();
}

@Transactional
public void resetPassword(String email, String newPassword) {
// 이메일로 사용자 조회
User user = userRepository.findByEmail(email).orElseThrow(UserNotFoundException::new);

// 새 비밀번호 암호화
String encodedPassword = passwordEncoder.encode(newPassword);

// 비밀번호 업데이트
user.updatePassword(encodedPassword);

// 저장
userRepository.save(user);
}
}