Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat : mail authentication add #86

Merged
merged 31 commits into from
Apr 13, 2024
Merged

Conversation

LeeJeongGi
Copy link
Member

회원 가입시 이메일 인증 부분 구현 하였습니다!!

요번 인증 구현하면서 문득 든생각은 복잡하게 하면 한없이 복잡하고 간단하게 생각하면 너무 간단하게?
할 수 있겠다 라는 생각이 들었네요.

우선 스터디 회의 하면서 이야기 했던데로, session 에 정보를 저장해서 인증 코드 값을 비교하는 방식으로 구현하였습니다!
회원가입 front 부분은 조금 허접할 수 있습니다... :(

@LeeJeongGi LeeJeongGi added the feat - enhancement New feature or request label Apr 11, 2024
@LeeJeongGi LeeJeongGi linked an issue Apr 11, 2024 that may be closed by this pull request
.message("Authentication successful!!")
.build();

Objects.requireNonNull(userSessionInfo).changeStatus();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이미 상단에서 userSessionInfo 의 null 체크를 진행되어있지만, 한번 더 체크해주셔서 좋네요!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 몰라서,,,, 2차 트랩을 설치 했습니다 ㅎㅎ

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좋습니다ㅎㅎ

Copy link
Member

@ghkdqhrbals ghkdqhrbals left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다 :)

public void changeStatus() {
this.isVerification = !this.isVerification;
this.updateTime = LocalDateTime.now();
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isVerification 을 false -> true 로 설정해주는 것 외 true -> false 로도 설정하기 위해서 위와 같이 로직을 구현한걸까요?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

지금은 false -> true 설정만 필요하긴 한데 true -> false 설정이 필요한 일이 생길 수도 있지 않을까 해서 설정했습니다!!

String authNum = randomNumber.generateVerificationCode();

String subject = "회원 가입 인증 코드";
String body = "안녕하세요!\n\n회원 가입을 위한 인증 코드를 안내드립니다. 아래의 인증 코드를 입력하여 계정을 활성화하세요:\n\n"
Copy link
Member

@ghkdqhrbals ghkdqhrbals Apr 11, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저희가 이제 이메일을 보내는 상황이 두 가지 발생할 것 같아요. 하나는 이메일 인증, 나머지는 결과전송.

즉, 이메일 body 를 생성하는 데 두 가지 타입으로 생성해야됩니다. 또한 추후 더 확장될 수 있어요. 그렇다면 유지보수가 편하도록 생성해야할 것 같습니다.

생각해본 방법으론 String createBody(String... args) 를 상속받도록 하는 것 입니다. 다만 args 의 인자 수가 고정되어있지 않기에 "코드작성 시 오류가 드러나지 않는다" 라는 단점이 있을 것 같아요.

만약 3개의 파라미터가 필요하지만 두 개만 기입했을 때, 코드상에서 오류를 반환하지 못함

최종 사용 형태를 미리 본다면 아래처럼 쓸 수 있도록 구현하고 싶습니다.

String verificationEmailBody = EmailBodyGenerator.createBody(new EmailVerificationFactory(), "userId", "name");
String resultEmailBody = EmailBodyGenerator.createBody(new ResultNotificationFactory(), "name", "testId", "templateId", "result1", "result2");

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아하 이해 했씁니다!! :)

한번 수정해볼께요 ! 지금은 너무 인증 코드에만 집중해서 메일이 발송되니 확장성이 전혀 없긴하네요 :(

@ghkdqhrbals
Copy link
Member

현재 #85 merge 이후 conflict 나는 부분을 수정했습니다. 대부분 redis 추가로 인한 conflict 였습니다. 따라서 pull 이후 코딩 해주시면 감사하겠습니다 :)

@LeeJeongGi
Copy link
Member Author

넵넵!! 테스트 코드 통과가 안되서 테스트 코드 추가좀 해야겠네요 ㅋㅋㅋ

Copy link

📝 Test code-coverage reports

File Coverage [61.16%] 🍏
MailController.java 100% 🍏
EmailVerificationFactory.java 100% 🍏
RandomNumberConfig.java 100% 🍏
UserSessionInfo.java 94.12% 🍏
RandomCodeGenerator.java 11.11%
MailSenderImpl.java 6.06%
Total Project Coverage 66.11% 🍏

Copy link
Member

@ghkdqhrbals ghkdqhrbals left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다 굿! 머지하겠습니다 :)

@ghkdqhrbals ghkdqhrbals merged commit c4a01f9 into develop Apr 13, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat - enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

feat: User email authentication
2 participants