-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: 탈퇴한 회원, 관리자의 로그인 차단 * refactor: 로그인 과정 Role 확인을 Enum으로 변경 * feat: 이메일 인증 후 회원 복구하도록 api 재작성 * fix: EmailVerifyCode 유효시간 수정 (3분->5분) * fix: secret key 제거 * fix: secret key 재수정 --------- Co-authored-by: 조은비 <[email protected]>
- Loading branch information
1 parent
2b79e13
commit ede4506
Showing
21 changed files
with
286 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -181,9 +181,21 @@ Content-Type: application/json | |
|
||
### 멤버 본인 탈퇴 (토큰 필요) | ||
DELETE http://localhost:8081/api/v1/members/me | ||
Authorization: Bearer {{token}} | ||
Authorization: Bearer eyJhbGciOiJIUzM4NCJ9.eyJpZCI6Mywic3ViIjoiZGh4bDUwQG5hdmVyLmNvbSIsImlhdCI6MTcwNDk3MzE5OCwiZXhwIjoxNzA0OTc0OTk4LCJhdXRob3JpdHkiOiJST0xFX1VTRVIifQ.6QrGoK0YJ2P9idqh5gVYZVRbZX_pNdCLLdAI9W0-npQXy_JBNAMTP2QGfSK7F9CZ | ||
|
||
### 멤버 계정 복구 (토큰 필요) | ||
POST http://localhost:8081/api/v1/members/restore | ||
Content-Type: application/x-www-form-urlencoded | ||
Authorization: Bearer {{token}} | ||
### 멤버 계정 복구 이메일 전송 | ||
POST http://localhost:8081/api/v1/members/send-restore-email | ||
Content-Type: application/json | ||
|
||
{ | ||
"email": "[email protected]" | ||
} | ||
|
||
### 멤버 계정 복구 (이메일 코드 포함) | ||
PATCH http://localhost:8081/api/v1/members/confirm-restore | ||
Content-Type: application/json | ||
|
||
{ | ||
"email": "[email protected]", | ||
"code": "925340" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
16 changes: 16 additions & 0 deletions
16
api/api-member/src/main/java/com/pgms/apimember/dto/request/ConfirmRestoreRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package com.pgms.apimember.dto.request; | ||
|
||
import jakarta.validation.constraints.Email; | ||
import jakarta.validation.constraints.NotBlank; | ||
import jakarta.validation.constraints.Size; | ||
|
||
public record ConfirmRestoreRequest( | ||
@NotBlank(message = "이메일은 필수 항목입니다.") | ||
@Email(message = "이메일 형식에 맞지 않습니다.") | ||
String email, | ||
|
||
@NotBlank(message = "인증 코드는 필수 항목입니다.") | ||
@Size(min = 6, max = 6, message = "인증 코드는 6자리 입니다.") | ||
String code | ||
) { | ||
} |
11 changes: 11 additions & 0 deletions
11
api/api-member/src/main/java/com/pgms/apimember/dto/request/MemberRestoreRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package com.pgms.apimember.dto.request; | ||
|
||
import jakarta.validation.constraints.Email; | ||
import jakarta.validation.constraints.NotBlank; | ||
|
||
public record MemberRestoreRequest( | ||
@NotBlank(message = "이메일은 필수 항목입니다.") | ||
@Email(message = "이메일 형식에 맞지 않습니다.") | ||
String email | ||
) { | ||
} |
68 changes: 68 additions & 0 deletions
68
api/api-member/src/main/java/com/pgms/apimember/email/EmailConfig.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package com.pgms.apimember.email; | ||
|
||
import java.util.Properties; | ||
|
||
import org.springframework.beans.factory.annotation.Value; | ||
import org.springframework.context.annotation.Bean; | ||
import org.springframework.context.annotation.Configuration; | ||
import org.springframework.mail.javamail.JavaMailSender; | ||
import org.springframework.mail.javamail.JavaMailSenderImpl; | ||
|
||
@Configuration | ||
public class EmailConfig { | ||
|
||
@Value("${spring.mail.host}") | ||
private String host; | ||
|
||
@Value("${spring.mail.port}") | ||
private int port; | ||
|
||
@Value("${spring.mail.username}") | ||
private String username; | ||
|
||
@Value("${spring.mail.password}") | ||
private String password; | ||
|
||
@Value("${spring.mail.properties.mail.smtp.auth}") | ||
private boolean auth; | ||
|
||
@Value("${spring.mail.properties.mail.smtp.starttls.enable}") | ||
private boolean starttlsEnable; | ||
|
||
@Value("${spring.mail.properties.mail.smtp.starttls.required}") | ||
private boolean starttlsRequired; | ||
|
||
@Value("${spring.mail.properties.mail.smtp.connectiontimeout}") | ||
private int connectionTimeout; | ||
|
||
@Value("${spring.mail.properties.mail.smtp.timeout}") | ||
private int timeout; | ||
|
||
@Value("${spring.mail.properties.mail.smtp.writetimeout}") | ||
private int writeTimeout; | ||
|
||
@Bean | ||
public JavaMailSender javaMailSender() { | ||
JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); | ||
mailSender.setHost(host); | ||
mailSender.setPort(port); | ||
mailSender.setUsername(username); | ||
mailSender.setPassword(password); | ||
mailSender.setDefaultEncoding("UTF-8"); | ||
mailSender.setJavaMailProperties(getMailProperties()); | ||
|
||
return mailSender; | ||
} | ||
|
||
private Properties getMailProperties() { | ||
Properties properties = new Properties(); | ||
properties.put("mail.smtp.auth", auth); | ||
properties.put("mail.smtp.starttls.enable", starttlsEnable); | ||
properties.put("mail.smtp.starttls.required", starttlsRequired); | ||
properties.put("mail.smtp.connectiontimeout", connectionTimeout); | ||
properties.put("mail.smtp.timeout", timeout); | ||
properties.put("mail.smtp.writetimeout", writeTimeout); | ||
|
||
return properties; | ||
} | ||
} |
43 changes: 43 additions & 0 deletions
43
api/api-member/src/main/java/com/pgms/apimember/email/MailService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package com.pgms.apimember.email; | ||
|
||
import org.springframework.mail.SimpleMailMessage; | ||
import org.springframework.mail.javamail.JavaMailSender; | ||
import org.springframework.stereotype.Service; | ||
|
||
import com.pgms.apimember.exception.MemberException; | ||
import com.pgms.coredomain.domain.common.MemberErrorCode; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import lombok.extern.slf4j.Slf4j; | ||
|
||
@Slf4j | ||
@Service | ||
@RequiredArgsConstructor | ||
public class MailService { | ||
|
||
private final JavaMailSender emailSender; | ||
|
||
public void sendEmail( | ||
String toEmail, | ||
String title, | ||
String text) { | ||
SimpleMailMessage emailForm = createEmailForm(toEmail, title, text); | ||
try { | ||
emailSender.send(emailForm); | ||
} catch (RuntimeException e) { | ||
throw new MemberException(MemberErrorCode.EMAIL_SEND_FAIL); | ||
} | ||
} | ||
|
||
private SimpleMailMessage createEmailForm( | ||
String toEmail, | ||
String title, | ||
String text) { | ||
SimpleMailMessage message = new SimpleMailMessage(); | ||
message.setTo(toEmail); | ||
message.setSubject(title); | ||
message.setText(text); | ||
|
||
return message; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,6 +2,21 @@ spring: | |
profiles: | ||
include: infra, security | ||
active: dev | ||
mail: | ||
host: smtp.gmail.com | ||
port: 587 | ||
username: [email protected] | ||
password: gmail_password | ||
properties: | ||
mail: | ||
smtp: | ||
auth: true | ||
starttls: | ||
enable: true | ||
required: true | ||
connectiontimeout: 5000 | ||
timeout: 5000 | ||
writetimeout: 5000 | ||
|
||
server: | ||
port: 8081 | ||
|
@@ -20,3 +35,4 @@ logging: | |
sql: debug | ||
orm: | ||
jdbc.bind: trace | ||
|
Oops, something went wrong.